当前位置: 首页 > news >正文

珠海高端网站设计设计师网名名字

珠海高端网站设计,设计师网名名字,wordpress调用文章方法,上海网站 备案查询C/CLI——1简介 如果你是.net程序员,不免会用到C/C写的库。对于简单的调用,可以直接使用DllImport来完成就可以,详情可参考C#调用C/C从零深入讲解。但是对于复杂的C类和对象,尤其是类似于OCC的大型C项目,DllImport可能…

C++/CLI——1简介

如果你是.net程序员,不免会用到C++/C写的库。对于简单的调用,可以直接使用DllImport来完成就可以,详情可参考C#调用C/C++从零深入讲解。但是对于复杂的C++类和对象,尤其是类似于OCC的大型C++项目,DllImport可能不够方便,这就要引出C++/CLI方式来实现C#与C++/C库的交互。C++/CLI常用的5中场景有:

  • 在.net中静态调用WindowApi或者DLL。

通常可经过 DllImport 属性包装出函数来调用

  • 用托管C++包装现有的DLL,供C#调用

托管C++代码可以直接引用原有的头文件,直接调用非托管函数,而不需要声明。这样,既减少了工作量,又避免引入错误。缺点是,这种方法会增加一个DLL。要注意的是托管字符串和非托管字符串是有区别的,并需要转换(特别要注意的Unicode字符串和多字节字符串的转换)。

  • 现有C++源代码,包装后供C#调用

C++的源代码,实际上可以直接编译成托管代码

  • 在托管C++代码中混合托管和非托管代码

只要从#pragma unmanaged编译指示开始的程序,一率编译成非托管代码;要想恢复成托管代码,只要使用#pragma managed就可以了

  • 不要DLL,直接把C++源代码与C#源代码一起编译成一个单独的Assembly

声明类

ref class Animal
{
public:int legs;void SetName(String^ name){this->name = name;}String^ GetName(){return name;}
private:String^ name;
};
  • 声明类时,加上了ref关键字,该类就变成了托管类,是可以被gc来管理的。加上了ref的类被称为引用类型,这是由于变量不实际包含对象,而是包含指向对象内存位置的指针,也可以称之为句柄,引用对象必须分配在堆上。
  • 可以使用value关键字来声明类,此时该类便是值类型,直接分配在栈上,变量本身包含对象本身。
#include "pch.h"
using namespace System;ref class AnimalRef
{
public:int legs;void SetName(String^ name){this->name = name;}String^ GetName(){return name;}
private:String^ name;};value class AnimalValue
{
public:int legs;void SetName(String^ name){this->name = name;}String^ GetName(){return name;}
private:String^ name;};int main(array<System::String^>^ args)
{AnimalRef cat;cat.SetName("mm");cat.legs = 4;Console::Write("cat:");Console::WriteLine(cat.GetName());AnimalValue dog;dog.SetName("xx");dog.legs = 4;Console::Write("dog:");Console::WriteLine(dog.GetName());Console::WriteLine(sizeof(dog));return 0;
}

image-20231226153746977

基本数据类型

类型说明
bool
char,__int8单字节,一般用于容纳ASCII
short,__int16整数
int,__int32整数
long整数,许多编译器中是int的两倍
long long ,__int64整数
float浮点
double双精度
wchar_t宽字符或多字符

在标准C++中,基本数据类的大小是不固定的,如int可能是4字节,也可能是8,或者其他,这是根据运行平台来决定的,但是在c++/cli中基本数据类型的大小是固定的。

句柄和指针

在标准C++中,指针容纳的是一个变量的内存地址,通过指针可以间接引用变量,但是C++/cli中,运行时会管理内存,所以它会将内存的东西一来一去以最大化的利用内容空间,这就意味着对象不会总在一个位置待着,这时候,指针的地址会过期。所以C++/CLI中没有指针的概念而是使用句柄来包含变量的地址,运行时会自动更新这个地址。

声明句柄的方式就是在变量名前面加上^符号,而且一般使用gcnew操作符号来创建对象并获取它的句柄。

int main(array<System::String^>^ args)
{AnimalValue^ cat = gcnew AnimalValue();cat->legs = 4;cat->SetName("mm");Console::WriteLine(cat->GetName());array<int>^ arr = gcnew array<int>(10);arr[0] = 12;Console::WriteLine(arr[0]);return 0;
}

强制类型转换

可以使用以下几种方式进行类型转换:

  1. (),例如:(float)7
  2. static_cast<>:常用
  3. const_cast<>:配合指针使用,添加或删除变量的常量限定
  4. dynamic_cast<>:在继承层次中使用
  5. safe_cast<>:类似于dynamic_cast<>,转换失败会报异常
  6. reinterpret_cast<>:将指针转换成其他类型指针

尖括号中是目标类型

int a = 10;
double b;
b = static_cast<double>(a);
http://www.15wanjia.com/news/190462.html

相关文章:

  • 电子工程网网站一个专门做ppt的网站
  • asp.net网站开发菜鸟城市生活服务app下载
  • 网站友链外链网站设计画布规范1680
  • 乐昌市建设网站长沙如何做网站
  • 做个网站多少钱 百度能查到的腾讯微校怎么做微网站
  • 激励案例网站制作云龙网站开发
  • 资源库网站开发网站设计影响seo的因素
  • 成都网站制作成都网站制作西安市城乡建设管理局网站的公示栏6
  • 网页设计网站模板中山网站建设外包
  • 科技公司网站开发模拟建筑
  • 携程旅行网站建设求一个能用的网址
  • 中国建设银行贷款网站客户管理系统服务
  • 网站建设运行工作情况总结软件开发公司规章制度
  • 襄阳市建设公司网站网站不备案不能用吗
  • 室内设计师第一网站开发公司房价制定
  • 上海seo网站建设软件研发过程管理
  • 外贸企业网站建设哪家好国内4g无法登录Wordpress
  • 阿里巴巴网站服务器成本做网站需要学什么
  • 莆田企业自助建站系统效果图网站无缝连接
  • 温州门户网站建设莞城短视频seo优化
  • 网站名称怎么变更wordpress页面如何设置新窗口
  • 门户网站盈利模式wordpress中文版源码
  • 网站截图可以做凭证吗留言网站怎么做
  • 自己做的网站如何联网一个叫mit做app的网站
  • 对网站建设更新情况的通报福步外贸论坛网首页
  • 做游戏装备网站可以吗.net建设网站步骤详解
  • 服务周到的网站建设深圳住房和建设局网站办事大厅
  • 如何维护企业电子商务网站建设wordpress2中文
  • 钓鱼网站制作者做个网站跳转链接怎么做
  • 盐都城乡建设部网站首页快速排名优化