首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在2015中将c++和c#混合在同一个项目中

在2015中将c++和c#混合在同一个项目中
EN

Stack Overflow用户
提问于 2017-05-11 10:35:05
回答 2查看 5.8K关注 0票数 3

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

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

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

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

我是否需要为两个C# (项目"C#")和C++/CLI++/原生部分(项目"C++")分别创建两个项目,然后从项目"C#“引用(添加引用)项目"C++”的DLL输出文件并将其静态链接?这是C++源文件直接集成到项目"C#“中的唯一方式,还是通过为每个源文件指定不同的编译器和不同的编译器选项而直接集成它们?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-11 11:22:39

如果选择2,则必须创建3个项目:

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

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

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

票数 3
EN

Stack Overflow用户

发布于 2017-05-11 10:48:21

如果选择2,则需要一个独立的C++/CLI项目,必须从c#项目中引用该项目。

我认为“静态链接”意味着添加程序集引用,这不是一回事。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43912970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档