我试图引用一个.Net DLL(称之为B.dll),它基本上是.Net第三方(称之为C.dll)的包装器,进入c ++ MFC项目。我确实为B.dll创建了tlb文件,并且能够在MFC应用程序中实例化并调用它。
目前,所有依赖项B.tlb,B.dll和C.dll都需要在bin中 MFC应用程序的文件夹。我想要做的是将这三个文件放在MFC执行文件夹的子文件夹中。
我尝试设置" privatePath" B.dll配置文件到子文件夹但是据我所知,它不是B.dll" privatepath"需要设置,但MFC应用程序(据我所知,它显然没有任何东西,因为它不是.Net应用程序)
感谢任何帮助。
答案 0 :(得分:0)
您不需要使用COM(如果您需要,我的答案是obsolet)。
您可以编写自己的C ++ / CLI包装器DLL,它只导出一个本机接口。比调用你可以这个本机包装器,这个包装器再次直接加载你的.Net组件并执行其中的代码。
在这个包装器DLL中,您可以添加ResolveEventHandler来实现自己的搜索(可能在子目录中)。将其添加到CurrentDomain-> AssemblyResolve
通过这个技巧,你可以解决所有这些COM的问题,并且你可以完全控制是否应该搜索无法加载的程序集。
我有来自here
的解决方案