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

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

我有一个 c++/CLI 库,它依次调用一个 c# 库。那很好,它隐含地联系着世界,一切都很好。但是由于各种原因,这些库并没有通过我们的自动化构建过程得到完美的处理,并且这些库无法找到彼此,除非我们将这些库移动到我们不希望它们存在的位置,并且不希望折叠到我们的库中。构建过程。

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

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

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

----编辑

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

最佳答案

不存在“C++/CLI 库”之类的东西,仅支持程序集。没有显式或隐式链接,绑定(bind)总是在运行时发生。程序集由 CLR 在运行时找到,它用于定位它们的规则在 MSDN library 中有详细描述。 。

在开发代码时,将所有依赖项复制到与 EXE 相同的目录中是明智的做法。得到构建系统的良好支持,但 C# 和 C++ 规则有所不同。 C++ 项目构建到解决方案的 Debug 目录,C# 项目构建到 EXE 项目的 bin\Debug 目录。因此,是的,通常需要更改 C++ 项目的输出目录设置或使用构建后事件复制文件才能将所有内容组合在一起。

关于c# - 如何将 cpp/cli 文件显式链接到 c# 库 .dll?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22204602/

相关文章:

c# - 以编程方式更改选择器的 ListView 样式

.net - 在 vb.net 应用程序中打开图像后无法删除图像

c++ - 从存档加载 DLL

c++ - DLL 的全局变量存储在内存中的什么位置?

c# - 获取通过 PropertyDescriptorCollection 循环的 List 项的类型

c# - 移动到更大的显示器时,窗口无法正确调整大小

c# - 在 C# 中读取 excel 2003(.xls)

Java RSA 加密 - 解密 .NET

c# - 正则表达式 - 仅匹配包含任何字母字符的字符串

windows - 将.dll 格式转换为.exe 格式?