【发布时间】:2010-02-02 21:57:45
【问题描述】:
我已经在我的开发机器上用 C# 创建并注册了一个托管 COM 库。我已成功注册它并使用 regasm 创建了一个 .tlb 文件,并将 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++ 应用程序在哪里寻找程序集或如何发现它在哪里寻找的建议都会很棒!
【问题讨论】: