
C/C++
文章平均质量分 59
jinxi1978
数量掌握C、C++、C++,正在学GO
展开
-
ubuntu22.04系统配置qgis二次开发环境
编译好的QGIS如果能运行,说明其开发的环境也配置好了,可以直接包含编译目录中的src或者build(这个目录是1.7中创建的用于存放编译过程文件和编译结果文件的文件夹)中的头文件,以及包含build/output/lib中的库文件,进行二次开发。但是qgis源码编译后获得的开发环境中的qt环境是不完全的,比如qtcharts这个模块没有,如果二次开发的软件中需要用到qtcharts,那么你还需要自己编译完整的qt开发环境。mkdir -p ${HOME}/dev/cpp/apps //创建安装目录。原创 2023-12-31 19:39:51 · 1706 阅读 · 0 评论 -
C++ 接口与导出类
最近编写C++动态链接库模块,模块内有一些类需要被外部用户调用,这种情况下可以采用接口或者导出类实现这个功能。如果导出类中没有任何其他的类对象作为成员,则直接导出类就可以用了,不过这种用法需要将类的头文件公开,调用者需要引用头文件才能调用导出类的功能,例如我们定义了一个点类,头文件(PointClass.h)内容#pragma onceclass _declspec(dllexport) Point{public: Point(); Point(double x,double y); ~P原创 2021-12-06 12:20:26 · 3859 阅读 · 0 评论 -
2021-03-06
C#调用C++ DLL中返回接口类对象指针的函数主要有2种方法,非托管和托管,2种都需要具备一定C++及DLL的基础:1.通过一个间接层DLL来封装接口对象的方法调用先来创建一个dll项目,用来生成一个给C#调用的dll:项目结构如下:(部分文件是自行添加的如模块定义文件def)各个文件的内容如下:// CppLibDll.h是接口定义头文件#pragma once// 下列 ifdef 块是创建使从 DLL 导出更简单的// 宏的标准方法。此 DLL 中的所有文件都是用命令行上定转载 2021-03-06 09:47:17 · 168 阅读 · 0 评论 -
C语言strcat函数为动态分配内存的char*数组进行字符串拼接
C 库函数 char *strcat(char *dest, const char *src) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾。要求dest指向的字符串必须首先具有足够空间存放src指向的字符串,但是如果dest指向的字符串是动态分配的内存那么在使用strcat函数时要特别注意,因为动态分配内存时会在分配内存的结尾(甚至是超过分配内存的结尾处)添加‘\0’,而strcat函数会将src指向的字符串内容添加在dest字符串中第一个出现‘\0’的字符位置(会替换掉‘\0’)并且原创 2020-05-24 18:56:10 · 4019 阅读 · 0 评论 -
C++调用GO编写的dll时如何传递动态数组
GO语言中只有固定长度的数组,动态数组对应的是切片,但是切片与C++中的动态数组不一致,其结构比较复杂,无法与C++利用动态分配内存获得的数组相对应,所以将切片作为参数时,C++不能用指针或者数组进行接收,而需要用GoSlice结构体进行接收。一、首先讲解一下如何用GO编译dll文件,有以下需要注意的几点:导入“C”包,即:import “C”导出函数的首字母必须大写,而且函数声明的上方必...原创 2020-04-24 16:25:15 · 1453 阅读 · 0 评论 -
win10 64位下go编译dll给C#调用
win10 64位下go编译dll给C#调用1、首先下载安装mingw-w64-install.exe,安装的时候根据go的架构选择64位或i686,安装后将mingw下的bin加入到PATH环境变量,打开控制台,输入gcc,查看是否安装成功。2、编写go代码:package mainimport “C”import “fmt”//export PrintByefunc PrintB...转载 2020-04-24 09:49:27 · 835 阅读 · 0 评论 -
C++、C#父类子类互转机制
简单来说子类可以直接转换为父类,但是父类如果想转换为子类是有条件的,首先被转换的父类对象起初必须声明为相同的子类对象,也就是说首先是某种子类对象转换来的父类对象可以在转换回去。C#的转换机制比较简单,对于父类、子类没有什么特殊要求,但是C++要求父类必须是含有虚函数的类(实现了多态机制),才能有条件实现父类转为子类。下面用代码说明C#代码using System;using System.C...原创 2020-04-18 18:47:39 · 575 阅读 · 0 评论 -
Golang与C++在内存分配机制上的不同
Golang与C++在内存分配机制上的不同C++如果使用new操作申请的内存是分配在堆上的要自己利用delete进行回收,如果是声明的局部变量会在栈上分配内存,并且在函数退出后由系统自动回收。但是GOlang在这方面与传统语言发生了非常大的区别,go语言编译器会做逃逸分析(escape analysis),分析局部变量的作用域是否逃出函数的作用域,要是没有,那么就放在栈上;要是变量的作用域超出了...原创 2020-04-18 10:12:27 · 611 阅读 · 0 评论 -
golang与C++数值计算效率的比较
让golang和C++做两个长度相同的数组对位元素的相乘然后再相加求和(类似于矩阵相乘),golang版本go 1.13,VScode编译,C++采用VS2015编译,release版本执行C++代码void multiply_Array(){ int x, y; double result = 0; LARGE_INTEGER t1; LARGE_INTEGER t2; LARG...原创 2020-04-17 13:57:00 · 4384 阅读 · 2 评论 -
C++含有指针成员的类对象作为函数返回值
C++含有指针成员的类对象作为函数返回值C++的函数内部如果声明并初始化了一个类的对象,并且在函数结束的时候要将这个对象返回,则实际的执行机制是首先调用该类的拷贝构造函数生成一个该对象的拷贝,然后返回这个拷贝,然后原始的对象会被析构。我之前一个以为是直接返回函数内部定义的变量,因此在这个过程中拷贝构造函数就显得十分重要,编译器会为我们生成一个默认的拷贝构造函数,但是当对象的类中含有指针成员的时候...原创 2020-04-17 13:04:43 · 2253 阅读 · 2 评论