如何将 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 项目? [复制]的主要内容,如果未能解决你的问题,请参考以下文章