如何将cpp / cli文件显式链接到c#库.dll?

时间:2014-03-05 17:15:57

标签: c# .net dll .net-4.0 c++-cli

我有一个c ++ / CLI库,它反过来调用一个c#库。这很好,它是隐含的连接,一切都与世界很好。但是由于各种原因,我们的自动构建过程并没有让图书馆得到完美的处理,除非我们将图书馆搬到我们宁愿不让它们进入的地方,否则图书馆找不到彼此,而宁愿不把它们折叠到我们的网站中。构建过程。

我建议我们/我可以编写一个使用XCOPY的后期构建事件。但是我们可以说我们不想这样做。

另一个建议是显式加载dll。 Windows表示明确链接“应用程序必须进行函数调用才能在运行时显式加载DLL”。问题是微软的例子不足以让我的小脑袋理解如何继续这个想法。更糟糕的是,我能找到的唯一例子已经过时了。也许我没有使用正确的搜索条件,但我很难通过谷歌找到更多相关信息。

我们如何将c ++ / Cli库明确地链接到C#.dll?

----修改

好的,我们如何显式链接使用__declspec()导出库的C ++ / CLI代码到C#.dll。

1 个答案:

答案 0 :(得分:2)

没有“C ++ / CLI库”这样的东西,只支持程序集。没有显式或隐式链接,绑定总是在运行时发生。 CLR在运行时找到程序集,MSDN library中详细描述了用于定位程序集的规则。

将所有依赖项复制到与EXE相同的目录中是在开发代码时理所当然的方法。在构建系统的支持下,C#和C ++规则是不同的。 C ++项目构建到解决方案的Debug目录,C#项目构建到EXE项目的bin \ Debug目录。所以,是的,通常需要更改C ++项目的输出目录设置或使用后期构建事件复制文件,以便将所有内容组合在一起。