如何将 C++ 源文件和头文件添加到 C# .Net 项目? [复制]

Posted

技术标签:

【中文标题】如何将 C++ 源文件和头文件添加到 C# .Net 项目? [复制]【英文标题】:How can I add C++ Source Files and Headers to a C# .Net project? [duplicate] 【发布时间】:2015-03-16 22:05:58 【问题描述】:

我想将 HIDAPI 库用于自制 USB 设备。与其将 VC++ 项目编译成它自己的 .dll 并在我拥有的 .Net 项目中引用它,我宁愿只将代码存在于 .Net 项目中并能够直接引用它。

原因是我想避免让一个 .dll 引用另一个 .dll,而是只有一个 .dll 文件。

我在做一些 JNI 工作时,我在 C++ 程序中使用了 C# 类。

我在这里尝试做的可能吗?有没有在 .Net 项目中使用 C++ 的白痴指南?

【问题讨论】:

你需要包装它,因为 .net 是托管代码,而大多数 c++ 是非托管的。 你可以用 c++/cli 编写它或者做 pinvokes。 可以将 .NET dll 合并在一起:ILMerge。但是你不能原生和管理在一起。 啊。刚刚找到另一个它的副本:***.com/questions/1854290/… 【参考方案1】:

“我在这里尝试做的事情可能吗?”

不,这是不可能的。这些源不能在同一项目类型中编译。您需要为 c++/cli 程序集创建一个单独的项目,并参考您的 c# 项目正在导入的这个项目。

【讨论】:

另请查看***.com/questions/1933210/c-cli-why-should-i-use-it 了解更多信息。【参考方案2】:

等等,有一个肯定的答案,但显然它完全是邪恶的:

How do I mix C# and C++ code in a single assembly?

如果您的 C++ 代码未使用 /clr:safe 编译(即使用 /clr 或 /clr:pure 编译),请执行以下操作:

1) 将 C++ 代码编译成 .obj 文件

2) 将您的 C# 代码编译为 .net 模块,使用 /AddModule 来引用 C++ .obj 文件

3) 使用 C++ 链接器将 C# 网络模块与 C++ 目标文件直接链接,以创建混合语言程序集

还有这个:Linking native C++ into C# applications

是的,不要那样做。

【讨论】:

以上是关于如何将 C++ 源文件和头文件添加到 C# .Net 项目? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Xcode - 如何将 c 库和头文件包含到可可项目中?

如何将外部库添加到 QT?

将复杂的结构(带有结构的内部数组)从 C# 传递到 C++

如何将托管 c++ 库导入 C# 应用程序(目标 .net 版本 3.5)

一点一点学写Makefile-增加第三方库和头文件

如何在Qt Creator中添加库文件和头文件目录