COM-взаимодействие между 32-битными и 64-битными приложениями - PullRequest
2 голосов
/ 08 апреля 2010

У меня есть приложение .NET windows form, скомпилированное как x86 - оно должно быть скомпилировано как x86, потому что оно ссылается на сторонние DLL, которые являются 32-битными.Приложение использует COM-взаимодействие для автоматизации приложений Office, а также AutoCAD.Мой вопрос: будет ли мой код взаимодействия COM нормально работать в 64-битной операционной системе против 64-битных версий Office и AutoCAD?Я собираюсь попробовать это, но мне было интересно, знал ли кто-нибудь о каких-либо проблемах?

1 Ответ

1 голос
/ 08 апреля 2010

Если office и autocad являются чисто 64-битными, то, вероятно, не потому, что они будут 64-битными образами и, следовательно, не будут загружены в 32-битный процесс, и у вас возникла обратная проблема для ваших 32-битных.

У нас была похожая ситуация, и в итоге мы сделали нашу программу "anycpu" и предоставили еще одну маленькую программу, которая была 32-битной, чтобы общаться с 32-битными DLL, тогда, когда мы обнаружим (intptr.size = 4[32] or 8[64]), если мы на 64-битной машине, то мы вызываем 32-битная программа (для связи с этими сторонними dll) и генерация какого-то вывода (в нашем случае мы написали небольшой XML-файл) и затем выход. Мы подождали завершения работы программы, затем прочитали файл и приняли меры к ответам.

На самом деле все сводится к тому, какая сторона программы имеет больше всего 64/32 и код в соответствии с этим.

...