Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

Взаимодействие 64-х битного приложения с 32-х битной библиотекой   Найти похожие ветки 

 
Германн ©   (2012-03-30 01:41) [0]

Имеется чьё-то чужое 64-х битное приложение и "не совсем чужая" библиотека созданная в 32-х битной Дельфи как (я так понимаю) "ActiveX library". Правы ли создатели того приложения, что создателям библиотеки нужно обязательно перекомпилировать библиотеку в 64-х битной Дельфи?
P.S. В технологии СОМ я не силён.


 
Дмитрий С ©   (2012-03-30 01:51) [1]

http://msdn.microsoft.com/en-us/library/windows/desktop/ms693716%28v=vs.85%29.aspx

Тут что-то про это расписано, но в 2 ночи не могу понять нерусский.


 
Германн ©   (2012-03-30 02:50) [2]


> но в 2 ночи не могу понять нерусский.

В третьем часу вечера я не могу понять как связан сей документ с моим вопросом. Даже зная "нерусский" :)
Но мне не к спеху. :)


 
DVM ©   (2012-03-30 07:29) [3]


> Правы ли создатели того приложения, что создателям библиотеки
> нужно обязательно перекомпилировать библиотеку в 64-х битной
> Дельфи?

Тут COM даже как бы и не причем. Какая разница COM или не COM - так или иначе COM это лишь надстройка над WinAPI, т.е это определенные правила игры.
Ну вот сам смотри. Внутри 64 бит приложения указатели имеют размер 64, внутри dll - 32. Как следствие, типы HANDLE, HMODULE, HWND и т.д. тоже меняют размерность. Если такие типы смотрят наружу, явно или косвенно то ответ очевиден. Но это не единственная причина несовместимости.


 
Anatoly Podgoretsky ©   (2012-03-30 08:49) [4]


> Германн ©   (30.03.12 02:50) [2]

Там сказано, что теперь COM не требуется в двух версиях, а может быть два в одном 64 и 32 бита. Этого достаточно для ответа на твой вопрос и понять к чему это относится.


 
han_malign   (2012-03-30 09:17) [5]


> Тут COM даже как бы и не причем.

- COM-обвязка, с out-of-process маршалингом - по словам Реймонда Чена - единственный способ подружить 32 и 64 бита...

COM - вроде как умеет загружать CLSCTX_INPROC_SERVER - в отдельный proxy-процесс и маршалить - но умен ли он настолько, чтобы делать это автоматом при 64.vs.32 не знаю(смутно вспоминается что-то связанное с CLSCTX_INPROC_HANDLER и дефолтным InprocHandler = ole32.dll)...

З.Ы. Чтобы не писать свои заглушки - нужно использовать в интерфейсе только "автоматизированные" типы(OLE Automation), но для Delphi(и С#) - это как раз норма...


 
han_malign   (2012-03-30 09:25) [6]


> ActiveX library

- а блин, не заметил - ActiveX с окнами - означает, что это исключительно CLSCTX_INPROC_SERVER - без всяких маршалингов - никакие заглушки не прокатят...
(32-битный IE оставлен в 64-битных системах из-за того, что 99% существующих ActiveX-приблуд никогда не станут 64-битными)


 
tesseract ©   (2012-03-30 10:13) [7]


> - COM-обвязка, с out-of-process маршалингом - по словам
> Реймонда Чена - единственный способ подружить 32 и 64 бита.
> ..


Это вообще-то логично. Даже 1С клиента х64 не поставляет по этим причинам. А add-in-ы теперь аж в четырех вариантах.


 
знайка   (2012-03-30 10:25) [8]


> Правы ли создатели того приложения, что создателям библиотеки
> нужно обязательно перекомпилировать библиотеку в 64-х битной
> Дельфи?
Правы.


 
Германн ©   (2012-03-31 01:11) [9]


> tesseract ©   (30.03.12 10:13) [7]
>
>
> > - COM-обвязка, с out-of-process маршалингом - по словам
> > Реймонда Чена - единственный способ подружить 32 и 64
> бита.
> > ..
>
>
> Это вообще-то логично. Даже 1С клиента х64 не поставляет
> по этим причинам.

Можешь пояснить своё высказывание? Ибо мой вопрос действительно имеет отношение к 1С.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.065 c
2-1330341115
agent17
2012-02-27 15:11
2013.03.22
TDateTime


15-1346704137
Rouse_
2012-09-04 00:28
2013.03.22
Ну собственно хвалюсь :)


15-1336115264
sniknik
2012-05-04 11:07
2013.03.22
Django... кодировка для RSS


4-1227867160
dmitry_12_08_73
2008-11-28 13:12
2013.03.22
Запрещение реакции на нажатие кнопки WIN на клавиатуре


15-1329506289
TUser
2012-02-17 23:18
2013.03.22
Элемент униформы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский