Всем привет.
Есть 32 битный COM EXE сервер. Для него я написал NET DLL плагин который
взаимодействует с сервером через interop.
На 32 битной ОС всё работает.
На 64 битной машине (у кастомера) плагина какбудто не существует. На данный момент я немогу
уточнить проблему и сказать на каком этапе возникает проблема взаимодействия так как
у меня сейчас 32-х разрядная машина (чуть позже смогу подебажить всё это дела на 64 битной).
Я слышал что при взаимодействии NET приложения и 32-х разрядного неуправляемого приложения
через интероп на 64 битной ОС возникуют большие проблемы.
Может кто сталкивался или знает где эта проблема обсуждается — буду рад получить любую информацию.
Заранее спасибо.
Здравствуйте, lapkos, Вы писали:
L>Я слышал что при взаимодействии NET приложения и 32-х разрядного неуправляемого приложения
L>через интероп на 64 битной ОС возникуют большие проблемы.
L>Может кто сталкивался или знает где эта проблема обсуждается — буду рад получить любую информацию.
Обзор проблем совместимости для 32-разрядных программ в 64-разрядных версиях Windows
В дополнение можно отметить что указатели в х64 стали 8 байт вместо 4.
Соответственно если при объявлении структур или сигнатур методов Interop, подразумевающих в качестве полей или параметров указатели, используется int (Int32) вместо IntPtr, проблем не миновать.
Здравствуйте, Аноним, Вы писали:
А>Обзор проблем совместимости для 32-разрядных программ в 64-разрядных версиях Windows
А>В дополнение можно отметить что указатели в х64 стали 8 байт вместо 4.
А>Соответственно если при объявлении структур или сигнатур методов Interop, подразумевающих в качестве полей или параметров указатели, используется int (Int32) вместо IntPtr, проблем не миновать.
Спасибо за ответ.
Насколько я понимаю наиболее простое решение — заставить приложение работать как 32-х битное.
А оно будет так работать (согласно информации полученной по вашей ссылке) при выполнении следующих условий:
• Эта программа имеет установленный бит ILONLY в сведениях заголовка.
• Эта программа была скомпилирована с помощью Microsoft .NET Framework 1.1.
Если данная программа не имеет установленного бита ILONLY в сведениях заголовка или если она была скомпилирована с помощью Microsoft .NET Framework version 2.0, эта программа будет запущена как «родная» 64-разрядная программа.
Моя программа имеет установленный бит ILONLY, но вот скомпилирована она была на Framework 2.0.
Что нужно сделать чтобы скомпилировать прогу на Framework 1.1?
Нельзя ли обойтись настройками проекта?