- 博客(18)
- 资源 (4)
- 收藏
- 关注
原创 在linux操作系统中离线编译GDAL库
这种方法可以在联网的机器上进行源代码的下载和编译,不过编译的结果需要可以拷贝到其他机器上使用。这种方式就是在联网的机器上下载源代码,拷贝到目标机器上进行编译安装。但是一般来说目标机器都是用做服务器的,一般不会进行大量其他操作,只是让你把资料拷贝上去进行部署,很少在服务器上进行大量编译安装操作。首先需要在联网的计算机上下载GDAL库及其依赖库的源代码,考虑到v10操作系统中的编译器版本比较老,##在相同架构的cpu及操作系统的机器上进行编译。##直接在目标机器上编译。
2025-01-19 12:38:31
341
1
原创 linux操作系统离线安装dotnet
选择linux的x64版本文件进行下载,下载文件为压缩包,将压缩文件拷贝至离线机器的目录下,什么目录无所谓,进入该目录,然后执行如下命令解压缩:tar -zxvf dotnet-sdk-3.1.301-linux-x64.tar.gz。上图中dotnet-sdk-8.0.404-linux-x64.tar.gz即为下载的文件,其余文件夹及文件为解压后生成的文件,其中/home/jinxi/dev/HTwater/dotnet为dotnet解压文件夹。命令打开该文件,在文件末尾添加。文件会解压至当前文件夹。
2025-01-12 17:28:43
365
原创 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
1687
原创 C++ 接口与导出类
最近编写C++动态链接库模块,模块内有一些类需要被外部用户调用,这种情况下可以采用接口或者导出类实现这个功能。如果导出类中没有任何其他的类对象作为成员,则直接导出类就可以用了,不过这种用法需要将类的头文件公开,调用者需要引用头文件才能调用导出类的功能,例如我们定义了一个点类,头文件(PointClass.h)内容#pragma onceclass _declspec(dllexport) Point{public: Point(); Point(double x,double y); ~P
2021-12-06 12:20:26
3849
原创 Win10+VS2015环境下CGAL安装与配置
CGAL依赖boost库,boost库需要利用gcc进行编译,所以在windows条件下需要首先安装gcc编译环境(也可能不需要,因为后面的boost编译命令中toolset用的是mscv,不过目前记录的是我的安装过程,是在MSYS2中编译的),我采用的是MSYS2配置gcc编译环境。一、MSYS2MSYS2的相关内容可以参考这个视频。二、boost配置好gcc编译环境以后下载boost,官方下载地址,进入后可以选择合适的版本下载,我选择的是老版本1.66,在“Old Boost Releases”
2021-04-17 12:24:24
1456
转载 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
165
原创 hec-ras的geometric Data对话框中如何加载GIS背景图层
1.打开HEC-RAS2.新建项目3.GIS Tools ->RAS Mapper在弹出的对话框中选择Tools->New Terrian,点击后会提示添加坐标系,这里可以选择N,在后面再添加地形terrian数据的时候可以用地形数据的坐标系作为新建的地图文件的坐标系。点击否以后会弹出对话框中,选择要添加的GIS背景图层,一般是TIFF的栅格数据格式选择了要添加的栅格数据以后会弹出对话框提示你是否将栅格文件的坐标系作为地图文件的坐标系,这里选择是,然后选择处理后的地形数据保存的文
2020-09-29 16:32:48
3027
1
原创 HEC-RAS 2D结果文件保存为栅格数据
HEC-RAS二维计算结果保存为arcgis栅格数据从主窗口打开RAS map在RAS map中选中需要保存的图层,在需要保存的图层上点击鼠标右键,在菜单中点击“edit map parameters”,选择“时刻”,保存的内容“raster based on terrain”,以及保存的参数,例如“depth”。点击“save map”在需要保存的图层上点击鼠标右键,在菜单中点击“compute/update stored map”这时会更新并保存计算结果在需要
2020-09-20 22:19:52
2694
1
原创 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
4009
原创 C++调用GO编写的dll时如何传递动态数组
GO语言中只有固定长度的数组,动态数组对应的是切片,但是切片与C++中的动态数组不一致,其结构比较复杂,无法与C++利用动态分配内存获得的数组相对应,所以将切片作为参数时,C++不能用指针或者数组进行接收,而需要用GoSlice结构体进行接收。一、首先讲解一下如何用GO编译dll文件,有以下需要注意的几点:导入“C”包,即:import “C”导出函数的首字母必须大写,而且函数声明的上方必...
2020-04-24 16:25:15
1447
转载 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
830
原创 git上传下载项目至码云
一、上传项目至码云云端操作:在码云上注册账号、登陆、新建仓库,比如updateTest。本地操作:首先进行本地项目的git初始化,在要上传的项目的文件夹上点击鼠标右键,在弹出的浮动菜单上点击“git bash here”弹出类似命令行的窗口,在上面输入:git init 命令对该文件夹进行git初始化。将码云上创建的仓库与本地项目文件夹相连接,命令为:git remote add...
2020-04-24 08:56:37
237
原创 golang编译环境配置
下载go语言开发包go1.13.windows-amd64.msi,点击安装,安装完后配置GOPATH、GPROOT,方法为“我的电脑”->属性->高级系统设置->环境变量新建系统变量->变量名GOROOT,变量值输入你期望的目录,相同方法设置GOPATH。安装开发环境VSCODE或者liteIDE,VSCODE需要配置调试环境及终端(terminal)。VSCO...
2020-04-21 19:25:39
824
原创 C++、C#父类子类互转机制
简单来说子类可以直接转换为父类,但是父类如果想转换为子类是有条件的,首先被转换的父类对象起初必须声明为相同的子类对象,也就是说首先是某种子类对象转换来的父类对象可以在转换回去。C#的转换机制比较简单,对于父类、子类没有什么特殊要求,但是C++要求父类必须是含有虚函数的类(实现了多态机制),才能有条件实现父类转为子类。下面用代码说明C#代码using System;using System.C...
2020-04-18 18:47:39
570
原创 Golang与C++在内存分配机制上的不同
Golang与C++在内存分配机制上的不同C++如果使用new操作申请的内存是分配在堆上的要自己利用delete进行回收,如果是声明的局部变量会在栈上分配内存,并且在函数退出后由系统自动回收。但是GOlang在这方面与传统语言发生了非常大的区别,go语言编译器会做逃逸分析(escape analysis),分析局部变量的作用域是否逃出函数的作用域,要是没有,那么就放在栈上;要是变量的作用域超出了...
2020-04-18 10:12:27
606
原创 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
4377
2
原创 C++含有指针成员的类对象作为函数返回值
C++含有指针成员的类对象作为函数返回值C++的函数内部如果声明并初始化了一个类的对象,并且在函数结束的时候要将这个对象返回,则实际的执行机制是首先调用该类的拷贝构造函数生成一个该对象的拷贝,然后返回这个拷贝,然后原始的对象会被析构。我之前一个以为是直接返回函数内部定义的变量,因此在这个过程中拷贝构造函数就显得十分重要,编译器会为我们生成一个默认的拷贝构造函数,但是当对象的类中含有指针成员的时候...
2020-04-17 13:04:43
2244
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人