Заранее извиняюсь за следующий подробный вопрос;Я новичок COM.
Сценарий: Мне нужно вызвать управляемую DLL, созданную на C #, из собственного кода Visual C ++ .В своем родном коде VC ++ я делаю следующее после регистрации файла SomeDLL.dll и создания файла SomeDLL.tlb с помощью RegAsm.exe
.
- Импорт файла TLB с помощью
#import "SomeDLL.tlb"
- Используйте класс
MyClass
, определенный в DLL с CComPtr<MyClass>
.
Все отлично!Он компилируется, и я могу запустить код и т. Д. Он попадает в вентилятор, когда я пытаюсь запустить это приложение на другом компьютере (т.е. не на том, на котором я его скомпилировал).Я копирую все необходимые библиотеки DLL и регистрирую ту же библиотеку DLL с RegAsm.exe
, но она не работает.
В частности, происходит сбой при попытке инициализировать библиотеку COM с помощью CoInitialize(0)
и возвращается ошибка S_FALSE
, что означает
Библиотека COM уже инициализирована в этом потоке.
Я могу с уверенностью заявить, что я нигде не вызывал эту функцию в своем коде.
Есть предложения?