没有合适的资源?快使用搜索试试~ 我知道了~
前言 随着 .NET Core 3.1 的第二个预览版本发布,微软正式将 C++/CLI 移植到 .NET Core 上,从此可以使用 C++ 编写 .NET Core 的程序了。 由于目前仅有 MSVC 支持编译此类混合代码,并且由于涉及到非托管代码,因此 C++/CLI 目前不能跨平台,只支持 Windows。 如果需要跨平台,除了微软的工作之外,还另外需要 gcc/clang 大量跟进,工作量较大且进度不可控,目前微软暂无使 C++/CLI 跨平台的计划。 先决条件 Visual Studio 2019 16.4 preview 3 .NET Core SDK 3.1 preview 2
资源详情
资源评论
资源推荐
.NET Core3.1编写混合编写混合C++程序程序
前言前言
随着 .NET Core 3.1 的第二个预览版本发布,微软正式将 C++/CLI 移植到 .NET Core 上,从此可以使用 C++ 编写 .NET Core 的程序了。
由于目前仅有 MSVC 支持编译此类混合代码,并且由于涉及到非托管代码,因此 C++/CLI 目前不能跨平台,只支持 Windows。
如果需要跨平台,除了微软的工作之外,还另外需要 gcc/clang 大量跟进,工作量较大且进度不可控,目前微软暂无使 C++/CLI 跨平台的计划。
先决条件先决条件
Visual Studio 2019 16.4 preview 3
.NET Core SDK 3.1 preview 2
开启方法开启方法
运行 Visual Studio Installer,安装“使用 C++ 的桌面开发” 和 “.NET Core 跨平台开发” 工作负载,然后再在单个组件中勾选“对 v142 生成工具 (14.24) 的
C++/CLI 支持”。
等待安装完毕,启动 Visual Studio,新建项目的时候即可看见两个新增的项目模板:
CLR Class Library (.NET Core)
CLR Empty Project (.NET Core)
第一个项目第一个项目
我们选择 CLR Empty Project (.NET Core) 创建我们的第一个 C++/CLI 项目,然后在右侧解决方案管理器的源文件(Source Files) 处右键添加 C++ 源文
件 main.cpp。
然后我们即可使用 C++ 编写 .NET Core 程序。
添加以下代码:
运行程序,输入 hello world 后回车:
可以看到我们成功的运行了程序并且完成了 C++ 代码与 .NET Core 的无缝交互。
注意点注意点
托管堆对象的创建使用 gcnew,而不是 new
托管堆对象指针的类型为 T^,而不是 T*,以上述代码为例,str_managed 的类型为 System::String^。得益于 C++ 11 开始有的类型自动推导,我们可
以直接使用 auto 代替显示类型声明,类似 C# 中的 var。
使用 :: 代替 . 访问 namespace 和 class/struct,使用 -> 代替 . 访问对象中的成员。
使用 ref class/ref struct 定义 .NET 引用类型,使用 value class/value struct 定义 .NET 值类型。
使用 interface class/interface struct 定义接口。
使用 property 定义属性。
C++/CLI 项目可以引用任何的 C++ 项目或动态链接库,但是要确保架构相同,即你不能用 x86 的配置引用 x64 架构下的非托管代码。
添加项目引用并使用添加项目引用并使用
对于引用 C++ 代码,在此不进行赘述,使用方式和正常的 C++ 项目没有任何区别。因此在这里只说如何引用 .NET 程序集。
我们可以直接添加对 .NET Standard/.NET Core library 的引用。如果出现无法使用 nuget 包管理器安装的情况,可以手动下载对应的 .NET 程序集 dll 然
后添加到项目引用当中。这里以 Newtonsoft.Json 为例。
首先添加引用
weixin_38618784
- 粉丝: 11
- 资源: 884
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0