在Visual Studio Express 2015中的同一项目中混合使用c ++和c#

时间:2017-05-11 10:35:06

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

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

我(想)我知道我有两个选择:

  1. 将我的原生C ++代码打包成非托管DLL,并使用PInvoke(DllImport等)从C#代码加载并运行它;
  2. 使用C ++ / CLI创建一个托管包装器C ++类,该类反过来引用我的非托管本机C ++类,为此我找到了一些示例。
  3. 假设我想使用选项2并使用Visual Studio Express 2015 IDE GUI,而无需从命令行直接调用编译器。

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

2 个答案:

答案 0 :(得分:2)

如果你选择选项2,你需要一个单独的C ++ / CLI项目,你必须从c#项目中引用。
我认为"静态地链接它#34;意味着添加程序集引用,这不是一回事。

答案 1 :(得分:1)

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

  1. C#项目
  2. 托管CLI / C ++(包装器)项目(dll)
  3. 本机C ++项目(dll或lib)
  4. 将包装器的引用添加到C#项目中,并将本机项目的引用添加到包装器中。但是,您可以将本机C ++代码直接添加到包装器并删除第3个项目。但是afaik你不能在其他原生C ++项目中使用包装器。

    您无法直接向C#添加C ++代码,因此您必须使用上述选项之一。