免费注册的COM,无需将dll复制到与可执行文件相同的目录中
||
如何在不将dll复制到与可执行文件相同的目录的情况下使用免注册的COM对象?这可能吗?
我想要一个完整的工作样本或详细的分步指南以适应我的实际情况。
例如,我具有以下组件:
CppTestRunner.exe-vc ++控制台应用程序
CppTests.dll-vc ++ mfc dll
CsCOMServer.dll-C#COM可见dll
我不想修改exe或其目录,例如添加外部清单。
CppTests.dll与exe位于不同的目录。
如果CsCOMServer.dll与CppTests.dll位于同一目录中,则可以。
CppTestRunner.exe会在CppTests.dll上调用LoadLibrary,但效果很好。
嵌入清单并使用Windows激活上下文api之后,我能够将CsCOMServer.dll复制到exe目录以验证CppTests.dll可以创建CsCOMServer.dll实例,而不会出现问题,但是再次,我试图避免此步骤。
当前,将CsCOMServer.dll与CppTests.dll放在同一目录中,而在exe目录中没有CsCOMServer.dll的情况下,调用CoCreateInstance时出现以下错误:
错误= 0x80070002系统找不到指定的文件。
我已经使用sysinternals进程监视器来跟踪CppTestRunner.exe查找的路径,等等。
我注意到,根据我尝试做的事情,有时CppTestRunner.exe尝试读取与CppTests.dll相同的目录中的CsCOMServer.dll.config,但是无论我尝试放在哪里,我都无法获取过去的错误。
另外,根据我尝试执行的其他操作,CppTestRunner.exe尝试读取与CppTests.dll在同一目录中的CsCOMServer.dll,但是由于某些原因,我仍然遇到相同的错误。
有人知道在这种确切情况下可以工作的代码吗?
您可能会说,这是某些单元\\集成测试的一部分。
作为一个简单的解决方法,我当前将CppTestRunner.exe复制到CppTests.dll所在的目录并从那里运行它,但想避免此步骤。
谢谢。
没有找到相关结果
已邀请:
2 个回复
扦帽次杏
痴浪墨
但是您需要将清单文件(DLL的)保留在EXE的保存位置。