【问题标题】:Mix c++ and c# in the same project inside Visual Studio Express 2015在 Visual Studio Express 2015 的同一个项目中混合 c++ 和 c#
【发布时间】:2017-05-11 10:35:05
【问题描述】:

我有一段非托管的本机 C++ 代码(一个类),我想将其集成到 C# .NET 程序集中。

我(认为)我知道我有两种选择:

  1. 将我的本机 C++ 代码打包到非托管 DLL 中,并使用 PInvoke(DllImport 等)从 C# 代码加载和运行它;
  2. 使用 C++/CLI 创建一个托管包装 C++ 类,该类反过来引用我的非托管本机 C++ 类,我为此找到了一些示例。

假设我想选择选项 2 并使用 Visual Studio Express 2015 IDE GUI,而不是直接从命令行调用编译器。

我是否需要为两个 C#(项目“C#”)和 C++/CLI-C++/native(项目“C++”)部分制作两个单独的项目,然后引用(添加引用)项目的 DLL 输出文件“ C++”来自项目“C#”并静态链接? 这是唯一的方法还是可以通过为每个文件指定不同的编译器和不同的编译器选项将 C++ 源文件直接集成到项目“C#”中?

【问题讨论】:

  • 长答案:是的。

标签: c# c++ visual-studio visual-studio-2015


【解决方案1】:

如果您选择选项 2。您必须创建 3 个项目:

  1. C# 项目
  2. 托管 CLI/C++(包装)项目 (dll)
  3. 原生 C++ 项目(dll 或 lib)

将包装器的引用添加到您的 C# 项目,并将本机项目的引用添加到您的包装器。但是,您可以将本机 C++ 代码直接添加到包装器中并删除第三个项目。但是你不能在其他本地 C++ 项目中使用包装器。

您不能将 C++ 代码直接添加到 C#,因此您必须使用您提到的选项之一。

【讨论】:

    【解决方案2】:

    如果您使用选项 2,则需要一个单独的 C++/CLI 项目,您必须从 c# 项目中引用该项目。
    我想“静态链接”意味着添加程序集引用,这不是一回事.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-19
      • 2011-12-01
      • 1970-01-01
      • 2014-01-28
      • 1970-01-01
      • 1970-01-01
      • 2016-06-19
      相关资源
      最近更新 更多