MFC托管代码引用

时间:2016-04-26 17:09:01

标签: c# .net mfc dllimport tlb

我试图引用一个.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应用程序)

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您不需要使用COM(如果您需要,我的答案是obsolet)。

您可以编写自己的C ++ / CLI包装器DLL,它只导出一个本机接口。比调用你可以这个本机包装器,这个包装器再次直接加载你的.Net组件并执行其中的代码。

在这个包装器DLL中,您可以添加ResolveEventHandler来实现自己的搜索(可能在子目录中)。将其添加到CurrentDomain-> AssemblyResolve

通过这个技巧,你可以解决所有这些COM的问题,并且你可以完全控制是否应该搜索无法加载的程序集。

我有来自here

的解决方案