Я создал и зарегистрировал управляемую библиотеку COM в C # на моей машине для разработки. Я успешно зарегистрировал его, создал файл .tlb с помощью regasm и успешно импортировал tlb в консольное приложение c ++, используемое для тестирования.
Моя сборка COM называется "efcAPI.dll", и она ссылается на другую сборку, которая не была настроена для COM или не зарегистрирована в любом случае и называется "efcServerDiscovery.dll". Эта вторая DLL содержит некоторый код, используемый моей COM DLL и находится в той же папке, что и efcAPI.dll.
Все, что касается загрузки COM-сборки, работает нормально. Я могу создавать экземпляры своих классов, определенных в COM, и вызывать из них методы. Однако, когда я вызываю определенные методы, которые используют код, определенный в efcServerDiscovery.dll, я получаю _com_error, который сообщает, что не может загрузить файл или сборку 'efcServerDiscovery'.
Я проверил, что везде на моем жестком диске, где существует efcAPI.dll, есть копия efcServerDiscovery.dll (это просто папка, из которой я создал и зарегистрировал efcAPI.dll). Я также попытался поместить efcAPI.dll и efcServerDiscovery.dll в один каталог с приложением c ++, но безуспешно.
Любые предложения о том, где приложение c ++ ищет сборку или как узнать, где она ищет, было бы замечательно!