Ошибка "Проблема при загрузке приложения " на 64-разрядной Windows при использовании GetInterfaceObject
Вопрос:
У меня есть AutoCAD .NET сборка, которая является ActiveX сервером, что позволяет мне управлять сборкой из внешнего приложения. Это хорошо работает в 32-разрядной Windows, но в 64-разрядной я получаю ошибку «Проблема при загрузке приложения» ("Problem in loading application") когда использую метод GetInterfaceObject() для доступа к моему ActiveX серверу. Я проверил, что сборка загружена, так что непонятно в чем ошибка.
Ответ:
Когда вы создаёте ваше приложение в 64-разрядной Windows, тогда ActiveX сервер внутри вашей сборки регистрируется Visual Studio в 32-разрядной части реестра, так как сама Visual Studio 32-разрядная даже в 64-разрядной Windows. Так что вам придётся самостоятельно зарегистрировать вашу сборку с использованием 64-разрядной версии утилиты regasm.
Простейшее решение – добавить в ваш проект в категорию Build Event, которое выполняется при каждом успешном построении вашего проекта:
"C:\Windows\Microsoft.NET\Framework64\v2.0.50727\regasm.exe"
Обсуждение: http://adn-cis.org/forum/index.php?topic=53.0
Отредактировано 06.06.2013 в 11:30:16