c调用c++ qt_C#调用C++(QT5.5.1项目)的C++/CLI(CLR项目)项目技术笔记
导航
1.编译环境
系统:windows10
环境:VS2010 + Qt5.5.1
2.项目配置
1.设置附加包含目录
1.此项设置包含的头文件,需要填入用到的.h文件目录
2.下图中的QTDIR是Qt5.5.1安装目录环境变量(默认路径:C:\Qt\Qt5.5.1\5.5\msvc2010)
2.设置附加库目录
1.此项设置引用的lib目录,如下图。
3.设置附加依赖项
1.此处设置指定的lib文件,一般不用填写。
3.CLR中各种定义
1.接口定义
2.类定义
3.枚举定义
4.属性定义
1.接口中定义:
2.类中定义:
4.CLR中各种使用
1.类的实例化
所有.net对象都需要使用gcnew进行创建,gcnew创建的对象不需要自己手动释放内存。
GTable ^ ret = gcnew GTable();
2.命名空间的使用
命名空间用于限定类,不同于C#,这里使用::进行分割。
virtual MyNameSpace::ITable ^ GetTable(int index);
5.CLR中数据类型的转换
1.String ^ 到 QString 的转换
QString MarshalString(String ^ s)
{
using namespace Runtime::InteropServices;
const char* chars =
(const char*)(Marshal::StringToHGlobalAnsi(s)).ToPointer();
string str = chars;
QString ret = str.c_str();
Marshal::FreeHGlobal(IntPtr((void*)chars));
return ret;
}
2.QString 到 String ^ 的转换
String ^ MarshalStringLocal8(QString os)
{
using namespace Runtime::InteropServices;
if (os.isNull()) return nullptr;
QByteArray data = os.toLocal8Bit();
char * str = new char[data.length() + 1];
strcpy_s(str, data.length() + 1, data.constData());
String ^ ret = Marshal::PtrToStringAnsi(static_cast(str));
delete str;
return ret;
}
String ^ MarshalString(QString os)
{
using namespace Runtime::InteropServices;
QByteArray data = os.toUtf8();
char * str = new char[data.length() + 1];
strcpy_s(str, data.length() + 1, data.constData());
String ^ ret = Marshal::PtrToStringAnsi(static_cast(str));
delete str;
return ret;
}
3.char * 到 String ^
String ^ MarshalString(char* os) {
using namespace Runtime::InteropServices;
String ^ ret = Marshal::PtrToStringAnsi(static_cast(os));
return ret;
}
4.wchar_t * 到 String ^
String ^ MarshalString(wchar_t* os) {
using namespace Runtime::InteropServices;
String ^ ret = Marshal::PtrToStringUni((IntPtr)os);
return ret;
}
5.数组的转换
using namespace System::Runtime::InteropServices;
QByteArray byteArray = obj.toByteArray();
int length = byteArray.count();
array ^ rbyteArray = gcnew array(length + 2);
Marshal::Copy((IntPtr)byteArray.data(), rbyteArray, 0, length);
ret = rbyteArray;
Visual Studio 2015开发Qt项目实战经验分享(附项目示例源码)
Visual Studio 2015开发Qt项目实战经验分享(附项目示例源码) 转 https://blog.csdn.net/lhl1124281072/article/details/800 ...
Go项目的测试代码2(项目运用)
上一篇文章介绍了最基本的测试代码的写法.Go项目的测试代码(基础) 这里简单的共享一下我在项目中使用的方式. 项目结构 我们实际项目中, 结构简单地分了控制层controllers和模块层models ...
Django(一)基础:安装环境、创建项目、视图、创建一个项目的应用(app)
一.安装环境 参考: https://docs.djangoproject.com/zh-hans https://www.runoob.com/django/django-install.html ...
Win32控制台、Win32项目、MFC项目、CLR控制台、CLR空项目、空项目区别
转载:https://blog.csdn.net/zfmss/article/details/79244696 1.Win32控制台 初始代码模版以main为程序入口,默认情况下,只链接C++运行时库 ...
VS自定义项目模板:[2]创建VSIX项目模板扩展
VS自定义项目模板:[2]创建VSIX项目模板扩展 听语音 | 浏览:1237 | 更新:2015-01-02 09:21 | 标签:软件开发 1 2 3 4 5 6 7 分步阅读 一键约师傅 百度师 ...
myeclipse如何修改Web项目名称,eclipse如何修改项目名字
myeclipse如何修改Web项目名称 1.复制一个现有的项目,重命名项目名称 2.这里的项目名称重新命名了,但是Web项目本质下的名称还是没有改变的.所以需要更改,更改方法-->选择项目右击 ...
HttpClient_001_初步实现项目01的servlet,与项目02的servlet,之间数据访问
HttpClient_001_初步实现项目01的servlet,与项目02的servlet,之间数据访问 代码下载地址: http://download.csdn.net/detail/poiuy19 ...
Intellij IDEA 的使用(创建项目、导入项目、同时部署多个项目、JRebel)等常见eclipse、myeclipse换idea必看
第一篇:Intellij IDEA 的使用 1.黑色主题 中文乱码修改 2.WEB项目的部署 以及自动编译 3.多项目的同时部署 4.相关插件提高工作效率 1.JRebel插件 实现热部署 2.Tas ...
eclipse中本地项目怎么和svn中的项目关联?
网速不好,通过别的方式把项目下载到本地硬盘,然后导入eclipse,代码修改后怎么提交到svn呢? 这个纠结了好久的问题... 首先要确定eclipse中安装了svn插件. 然后在“svn资源库研究” ...
让项目管理理论“落地”——读《IT项目经理成长手记》有感
最近利用业余时间阅读了一本好书--(潘东.韩秋泉著).本书的两位作者是神州数码(中国本土最大的整合IT服务提供商)的高管,在书中他们介绍了神州数码在IT项目管理领域 ...
随机推荐
jdk(多版本)安装注意!
♣安装jdk和jre ♣jdk配置环境变量和测试 ♣安装多版本jdk和切换 ♣jdk下的jre和第二次安装的jre的区别 注意点: 1.jdk版本需要是64位 2.安装JDK 选择安装目录 安装过程中 ...
MINA2 框架详解(转)
Apache Mina Server 是一个网络通信应用框架,也就是说,它主要是对基于TCP/IP.UDP/IP协议栈的通信框架(当然,也可以提供JAVA 对象的序列化服务.虚拟机管道通信服务等),M ...
FragmentTabHost
FragmentTabHost public class FragmentTabHost extends TabHost implements TabHost.OnTabChangeListener ...
搭建spring+mybatis+struts2环境的配置文件
1.web.xml配置 <?xml version="1.0" encoding="UTF-8"?>
初用jquery
---恢复内容开始--- 这两天在顶顶大人的指导下,利用jquery框架做了一个动态切换的小页面.最终效果图: 这么萌萌哒的图片让我觉得一直在测试也没那么累.实现功能如下: 1.打开页面时,自动切换, ...
NetCore1.1+Linux部署初体验
1.环境准备 Centaos7+Win10 虚拟机 Win10安装VS2017 https://www.asp.net/downloads注意勾选下.Net Core 3.Centaos安装netco ...
Python网络编程篇之socket
1 socket 插座?呵呵,想多了,翻译过来意思是套接字! A network socket is an internal endpoint for sending or receiving dat ...
[NOI2015]寿司晚宴(状压dp)
为了庆祝NOI的成功开幕,主办方为大家准备了一场寿司晚宴.小G和小W作为参加NOI的选手,也被邀请参加了寿司晚宴. 在晚宴上,主办方为大家提供了n−1种不同的寿司,编号1,2,3,⋯,n-1,其中第种 ...
MVC,MVP设计模式
什么是MVP MVP是模型(Model).视图(View).主持人(Presenter)的缩写,分别代表项目中3个不同的模块. 模型(Model):负责处理数据的加载或者存储,比如从网络或本地数据库获 ...
React Native入坑记录
1.render中如果使用props,直接用this.props.xxx,如果是在JSX中,用{this.props.xxx} 2.警告each child in an array or iterat ...
c调用c++ qt_C#调用C++(QT5.5.1项目)的C++/CLI(CLR项目)项目技术笔记相关推荐
- 直观讲解一下 RPC 调用和 HTTP 调用的区别!
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 作者:浮生忆梦 blog.csdn.net/m0_3811 ...
- 直观讲解一下RPC调用和HTTP调用的区别
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:浮生忆梦 blog.csdn.net/m0_38110132 ...
- 把接口调用打成jar包的类怎么写_直观讲解RPC调用和HTTP调用的区别
来源 :浮生忆梦 很长时间以来都没有怎么好好搞清楚RPC(即Remote Procedure Call,远程过程调用)和HTTP调用的区别,不都是写一个服务然后在客户端调用么?这里请允许我迷之一笑~N ...
- oracle创建函数和调用存储过程和调用函数的例子(区别)
创建函数: 格式:create or replace function func(参数 参数类型) Return number Is Begin --------业务逻辑--------- End; ...
- C++对象模型3——vptr的位置、手动调用虚函数、从汇编代码看普通调用和多态调用
一.vptr的位置 class test { public:int i; virtual void testfunc() {} };int main() {test a;char* p1 = rein ...
- zblog如何调用HTML,Zblog调用栏目文章的方法
很多的网站在php空间建站和运营的时候都会要调用到某个栏目里的文章,关于调用栏目里的文章这一类的教程,无忧主机小编也已经介绍过很多种类的程序和方法,但是还没有介绍过zblog这款程序的调用栏目文章的方 ...
- java调用net webservice_java调用.net的webservice
一.参考文献 二.概述 前面写了一篇博客eclipse+webservice 是在java环境下进行的.考虑到webservice的跨系统,跨语言,跨网络的特性,下面写了一个实例来测试其跨语言的的特性 ...
- oracle创建包 和调用,oracle创建函数和调用存储过程和调用函数的例子(区别)...
创建函数: 格式:create or replace function func(参数 参数类型) Return number Is Begin --------业务逻辑--------- End; ...
- 构造函数、拷贝构造函数和析构函数的的调用时刻及调用顺序
构造函数.拷贝构造函数和析构函数的的调用时刻及调用顺序 对象是由"底层向上"开始构造的,当建立一个对象时,首先调用基类的构造函数,然后调用下一个派生类的构造函数,依次类推,直至到达 ...
最新文章
- spark 获取广播变量_Spark流式程序中广播变量和累加器为何使用单例模式
- python中if错误-Python中错误和异常
- 常用的 css 样式 记录
- 2017年秋季个人阅读计划
- Python字典的常用操作
- gPodder 3.4 发布,播客接收器
- hdu 1232 畅通工程
- [SDOI2015] 序列统计
- Sql Server 2000 挂起怎么办
- 电信天翼网关接不上服务器无信号咋小,天翼网关有wifi信号,但不能上网的问题汇总解答 看完就明白...
- java判断接口地址是否存在_java.util.Iterator接口中的hashNext()方法是用来判断集合中是否存在下一个元素的()_学小易找答案...
- linux 输入法成繁体字_寻找Ubuntu中繁体字输入法
- element环境插件
- 创建服务器站点的步骤,如何自己建立网站 基本步骤和流程有哪些
- element-ui更改图标icon大小
- WAP、触屏版网站及APP的区别
- 搬家后计算机总重启,电脑老是开机后不久(几分钟)自动重启,重启一两遍后就可以正常运行...
- 操作系统OS第一章练习作业【附答案详解】
- 【点击链接,自动下载安装APP,小米公司的坑】在浏览器中, 我们以为回退就能解决误点击。其实是不管用的。
- PlusFo小道消息独家报道,与黑子的争霸谁能更胜一筹
热门文章
- 计算机网络ospf实验报告,中山大学《计算机网络实验报告》10-OSPF实验.pdf
- OpenInfra Summit 2022 | 安超云用户脱颖而出 入围超级用户大奖
- 高仿蓝奏云盘下载页面源码
- 岩土工程、颗粒流计算软件PFC6.0疫情传播案例——生化危机、病毒传播感染、古尔丹大战霜狼氏族
- 1688搜索新品API接口-(按关键字搜索新品数据API接口)
- 12、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用 == 还是equals()? 它们有何区别?
- 【mysql的使用】
- Codeforces 844A
- 2020-09-19《GNU Radio软件无线电技术》白勇 胡驻华编著 笔记(1)
- 6-2 两个字符串穿插 (10 分) pta c语言