Исключение среды выполнения COM при создании экземпляра в Windows 7 / Win Server 2008 - PullRequest
1 голос
/ 07 июня 2011

У вас может быть несколько советов на этой странице: http://www.echelon.com/support/kb/solution.asp?solutionID=668

Эта страница почти точно описывает мою ситуацию.Однако руководства там не подходят.

  1. Как я вижу, DEP не может завершить работу в W7 / WS2008.

  2. Пути в editbin (и их путь киспользоваться) кажется переписано в VS2010

  3. Ходят слухи, что NXCOMPAT больше не действует?

Небольшое описание проблемы,
Старый файл DLL примерно 2000 года (возможно, C ++, но также может быть VB6).Это Interop COM DLL, которая использовалась в течение нескольких лет в нашей старой (VB6) среде.DLL подключается в VS через «Выбор элементов ToolBox / COM-компонентов».Затем добавил dll к проекту в качестве ссылки.Я утверждаю, что этот код запускается из консольного приложения (чтобы избежать любых ошибок, связанных с IIS).

Когда код пытается загрузить экземпляр объекта, отображаются ошибки.

Creating an instance of the COM component with CLSID {104B7F00-06EE-11CF-9AE0-0020AFD34749} from the IClassFactory failed due to the following error: 80040023.

Какие у вас идеи здесь?Как вы решили проблему с COM (в Windows 7 / Vista / Win Srv 2008?)?

Ответы [ 2 ]

0 голосов
/ 02 марта 2012

1) Кажется, я не понимаю: «Как я вижу, DEP не может завершить работу в W7 / WS2008». Да, вы можете отключить DEP в Win7. Пожалуйста, смотрите здесь: http://www.fanhow.com/knowhow:Enable_or_Disable_DEP_in_Windows_7_27019737 2) editbin существует в VS2010 здесь (измените этот путь в соответствии с установочным диском): C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin \ editbin.exe. Откройте командную строку Visual Studio, и вы должны просто использовать ее, не зная пути к ней. 3) Я не думаю, что это так. В противном случае этот переключатель будет устаревшим. Документ MSDN, похоже, не предлагает так: http://msdn.microsoft.com/en-us/library/ms235442(v=vs.100).aspx

И GUID, и сообщение об ошибке указывают на то, что вы имеете дело с проприетарным компонентом. Таким образом, документация, отличная от упомянутой в описании проблемы, здесь не поможет. Итак, другая идея заключается в том, чтобы подключить WinDbg к процессу и посмотреть, откуда на самом деле происходит исключение. Однако без символов / источников для проприетарного компонента выявление и устранение проблемы кажется нетривиальной задачей.

0 голосов
/ 07 июня 2011

подсказки:
- проверка рунтинных модулей;
- использование Зависит от обнаружения отсутствующих модулей;
- использование подсказок по этой ссылке для взаимодействия 32/64 бит;

...