如何将 C++ 源文件和 Headers 添加到 C# .Net 项目?

How can I add C++ Source Files and Headers to a C# .Net project?

我想为 home-brewed USB 设备使用 HIDAPI 库。不必将 VC++ 项目编译成它自己的 .dll 并在我拥有的 .Net 项目中引用它,我更愿意只在 .Net 项目中包含代码并能够引用它直接。

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

我是反过来做的,有点像,当我在做一些 JNI 的时候,我在 C++ 程序中使用了 C# class。

我在这里尝试做的事情可行吗?是否有在某处的 .Net 项目中使用 C++ 的白痴指南?

"Is what I am trying to do here possible?"

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

等等,答案是肯定的,但显然这是完全邪恶的:

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

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

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

2) 将 C# 代码编译成 .netmodule,使用 /AddModule 引用 C++ .obj 文件

3) link C# netmodule直接用C++对象文件使用C++ linker创建混合语言汇编

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

是的,不要那样做。