【问题标题】:How can I add C++ Source Files and Headers to a C# .Net project? [duplicate]如何将 C++ 源文件和头文件添加到 C# .Net 项目? [复制]
【发布时间】: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。但是你不能原生和管理在一起。
  • 啊。刚刚找到另一个它的副本:stackoverflow.com/questions/1854290/…

标签: c# c++ visual-studio


【解决方案1】:

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

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

【讨论】:

【解决方案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

是的,不要那样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-02
    • 2016-02-12
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多