.NET Core3.1编写混合C++程序_实用技巧

来源:脚本之家  责任编辑:小易  

这个CPU固然是很不错的,只不过没有独显,用集成显卡玩游戏还是很有压力的所以不但要上独显,还要上一个好一点的独显,要不然你CPU就浪费了至于i5和A10的话,我认为i5性能更好。原来A10的位置上的是羿龙955。CPU Intel 酷睿i5 3450 ¥ 1190主板 技嘉GA-B75M-D3V ¥ 599内存 金士顿4GB DDR3 1600 两条 ¥ 150x2硬盘 希捷Barracuda 1TB 7200 ¥ 435显卡 影驰GTX660黑将 ¥ 1499机箱 鑫谷零夏一度Z2 ¥ 199电源 航嘉多核WD500 ¥ 339合计:¥ 4561此价格为中关村报价,和实际价格有差距,有一部分部件以上报价偏高如果换成A10的话,CPU和主板换掉即可,其他的不用AMD A10-5800K ¥ 860技嘉 GA-F2A85XM-HD3 ¥ 649www.zgxue.com防采集请勿采集本网。

前言

随着 .NET Core 3.1 的第二个预览版本发布,微软正式将 C++/CLI 移植到 .NET Core 上,从此可以使用 C++ 编写 .NET Core 的程序了。

for(int x=1;x;x+) { switch(x) {case 1:System.out.println(\"1\");break;case 2:System.out.println(\"1 2\");break;case 3:System.out.println(\"1 2 3\");break;case 4:System.out.println(\"1 2 3

由于目前仅有 MSVC 支持编译此类混合代码,并且由于涉及到非托管代码,因此 C++/CLI 目前不能跨平台,只支持 Windows。

#include float fun(int n) { float s=1.0;int x=0;for(int i=2;i;i+) { for(int j=i;3.一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。4.源程序中可以有预处理命令

如果需要跨平台,除了微软的工作之外,还另外需要 gcc/clang 大量跟进,工作量较大且进度不可控,目前微软暂无使 C++/CLI 跨平台的计划。

酷睿是intel的处理器系列,定位中高端用户,i5 7200u是具体的型号,末尾带u代表的是低电压笔记本处理器,后面的数值是处理器的主频,标准频率是2.5,最高可以睿频至3.1,所谓的睿频就是智能超频

先决条件

从二代到七带差距都不大,基本都是5%左右。超线程能高出30%左右,另外I7的频率比i5高10%左右,缓存也比I5高一点。但是三代架构比四代架构差那么一点点。综合起来,估计高出个35%~40%左右。

Visual Studio 2019 16.4 preview 3

package test;import java.util.Scanner;public class Test40006 { public static void main(String[]args){ int ri,repeat;int temp,flag;double eps,item,sum;Scanner in=new Scanner(System.

.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 为例。

首先添加引用

然后我们就能使用啦!

然后我们编写一个 .NET 类型,为了展示的更完整,我们采用完整的属性书写方法,而不是自动属性。

然后我们构建一段 json 字符串,试试用 Newtonsoft.Json 解序列化。

运行,输出:

后记

虽然 C++/CLI 暂时不能跨平台,但是对 .NET Core 的支持极大的丰富了 .NET Core 的适用范围,可以用于编写高性能的 C++ 程序的同时,享受来自 C++ 和 .NET Core/.NET Standard 的全部生态。

对于编写 Windows 程序,C++/CLI 绝对值得一试。而关于跨平台的问题,说不定后面的版本微软就支持了呢?要知道,两年前 C++/CLI 在 .NET Core 上运行微软给的回复也是“没有计划”,然而如今却顺利的完整支持了。

对于 C++/CLI 的其他地方,可以参考微软官方文档,内容十分丰富(由于中文文档存在部分机器翻译,建议有能力的朋友直接阅读英文文档避免机器翻译带来的错误):

https://docs.microsoft.com/zh-cn/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp?view=vs-2019

参考文献

https://devblogs.microsoft.com/dotnet/announcing-net-core-3-1-preview-2/

https://devblogs.microsoft.com/cppblog/an-update-on-cpp-cli-and-dotnet-core/

https://docs.microsoft.com/zh-cn/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp?view=vs-2019

#includeincludelong factorial(int a){long r;if(a>0)r=a*factorial(a-1);elser=1;return r;}int main(void){int i;double result=0;for(i=1;i;i+)result+1.0/factorial(i);printf("%f\\n",result);return 0;}代码如上,结果验证:恰好是e-1。有不懂可以追问或私信内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • 在c++中反射调用.net的方法(一)
  • 在c++中反射调用.net的方法(二)
  • 在c++中反射调用.net的方法(三)
  • c#中的fileupload 选择后的预览效果具体实现
  • asp.net下降文本格式数据导入到数据库中的代码
  • 用asp.net实现文件的在线压缩和解压缩
  • asp.net页面请求超时时间设置多种方法
  • 浅谈asp.net mvc应用程序的安全性
  • 未在本地计算机上注册“microsoft.ace.oledb.12.0”提供程序报错
  • asp.net自定义控件之加载层
  • asp.net 无刷新文件上传并显示进度条的实现方法及思路
  • .net core中objectpool的使用与源码解析
  • datalist绑定到row[]行集合的问题的方法
  • 编写程序,如何用for循环语句编写1+1/2!+1/3!+1/4!+……的前十五项和。
  • core i5 3450 3.1GHz的CPU玩游戏怎么样?需要配独显吗? core i5 3450 3.1GHz和A10 5800K比起来哪个更好点
  • 关于3.1GHz 四核 Intel Core i5 处理器和3.4GHz 四核 Intel Core i7 处理器
  • C语言编写函数求:1-1/2+1/3-1/4+1/5-1/6+...1/n的值怎么做?结果是什么呢?
  • JAVA编写程序输出下列结果 1 1 2 1 2 3 1 2 3 4
  • c语言编写。计算1+1/(1+2)+1/(1+2+3)+.....+1/( 1+2+3+.....
  • 酷睿i5–7200u(2.5–3.1ghz)是什么意思?
  • 酷睿3代i7好还是四代i5好
  • 用java编写程序计算1-1/3+1/5-1/7+……
  • 请问,问1:下面图片中,处理器一栏的core i 3 M 380@ 2.53GHZ 双核……是什麽
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全基础应用实用技巧自学过程首页asp.net实用技巧在c++中反射调用.net的方法(一)在c++中反射调用.net的方法(二)在c++中反射调用.net的方法(三)c#中的fileupload 选择后的预览效果具体实现asp.net下降文本格式数据导入到数据库中的代码用asp.net实现文件的在线压缩和解压缩asp.net页面请求超时时间设置多种方法浅谈asp.net mvc应用程序的安全性未在本地计算机上注册“microsoft.ace.oledb.12.0”提供程序报错asp.net自定义控件之加载层asp.net 无刷新文件上传并显示进度条的实现方法及思路.net core中objectpool的使用与源码解析datalist绑定到row[]行集合的问题的方法java正则表达式 pattern和matche未将对象引用设置到对象的实例 (asp.net(c#)网页跳转七种方法小结未能加载文件或程序集“xxx”或它asp.net“服务器应用程序不可用”asp.net中的几种弹出框提示基本实asp.net gridview 72般绝技asp.net生成excel并导出下载五种asp.net汉字转拼音和获取汉字首字asp.net对路径"xxxxx"在asp.net中操作sql server数据库的一些小asp.net mvc 数据验证及相关内容gridview中加上checkbox 的全选功能的代码asp.net网站聊天室的设计与实现(第3节)静态gb2312编码在项目传值出现中文乱码现asp.net中利用webclient上传图片到远程服ajax.net +jquery 无刷新三级联动的实例代关于多对多关系表无法更新与插入的问题visual studio 2017 rc 初探安装教程
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved