自由软件开发者
C++资深开发者,订阅用户:如果评论留言不能及时回复,请Q我:296863766 注明为CSDN
展开
-
C++20导出模块及使用
cppm文件为导出模块的实现。.ixx文件为导入模块文件。原创 2025-02-07 15:42:44 · 300 阅读 · 0 评论 -
获取无人机经纬度是否在指定禁飞区内
【代码】获取无人机经纬度是否在指定禁飞区内。原创 2024-09-15 13:45:29 · 531 阅读 · 0 评论 -
Apple M3编译MAVSDK安卓平台SO库
注释掉openssl自动编译,位于third_party/CMakeLists.txt下。4.验证文件是否为arm平台。生成makefile成功。原创 2024-09-13 09:58:49 · 441 阅读 · 0 评论 -
Apple M3编译OpenSSL安卓平台SO库
添加ANDROID_NDK_ROOT环境变量,iosdev改为你自己的用户名。头文件安装位置:/usr/local/include/openssl。2.配置NDK环境变量:vim ~/.zprofile。5.安装: sudo make install。添加NDK下可执行文件路径到PATH环境变量。库文件安装位置:/usr/local/lib。进入openssl源码目录,执行下面指令。4.编译:输入make后回车。验证文件是否为arm平台的。原创 2024-09-13 09:25:28 · 554 阅读 · 0 评论 -
MAVSDK工程手动编译MAVLINK私有协议
1.注释掉mavlink自动编译。为了操作方便,写成shell脚本。2.替换修改后的自定义消息。在桌面直接调用并生成与编译。3.生成makefile。原创 2024-09-09 10:23:32 · 221 阅读 · 0 评论 -
C++异步编程之std::promise与std::future使用示例
2.获取promise对象的future实例。3.设置promise对象中的共享内存值。4.取future中的操作结果。原创 2024-08-22 17:24:51 · 205 阅读 · 0 评论 -
C++实现取两个经纬度的距离
C++实现取两个经纬度的距离。原创 2024-08-21 17:27:59 · 271 阅读 · 0 评论 -
macOS系统(intel)编译MAVSDK安卓平台so库
如proto文件有修改,需要手动运行 ./tools/generate_from_protoc.sh重新生成,然后再生成makefile。生成makefile前先手动修改protobuf版本为最新的(如:27.3)4.验证libmavsdk_server.so。手动编译并安装libLZMA与openssl。确认你的电脑能正常访问github.com。在终端运行如下脚本生成makefile。生成makefile成功。原创 2024-08-20 16:46:14 · 248 阅读 · 0 评论 -
liblzma库Android平台编译
如果没有下面这两个库,安装一下gettext。生成Android平台makefile。elf64表示为android平台64位。验证文件是否为Android平台。makefile生成成功。原创 2024-08-17 22:58:57 · 331 阅读 · 0 评论 -
libLZMA库iOS18平台编译
使用autogen.sh生成configure文件。2.生成makefile。原创 2024-08-17 22:38:15 · 321 阅读 · 0 评论 -
Ubuntu22.04安卓编译环境搭建及so库编译
如果proto文件有修改,需要重新生成:运行:./tools/generate_from_protos.sh生成。vim ~/.profile 或者 ~/.bashrc 或者 /etc/profile。解压NDK:unzip ./android-ndk-r25b-linux.zip。下载Toolchain.cmake到本地。Toolchain.cmake下载成功。成功生成安卓平台so库。生成makefile。原创 2024-08-14 14:49:29 · 462 阅读 · 0 评论 -
MAVSDK添加自定义消息与函数实现云台(Gimbal)调整功能
3.运行generate_from_protos.sh重新根据.proto生成.cpp与.h文件。5. .proto生成的.cpp文件,成功实现上面的同步与同步方法。4. .proto生成的.h文件,成功包含同步与异步方法声明。7.重新编译生成libmavsdk_server.so。1.找到action.proto文件并添加如下消息。1.替换原来的action.proto文件。2.通过.proto文件生成java文件。3.重新打包SDK工程,生成JAR包。.proto成功生成.java。原创 2024-08-09 19:02:27 · 273 阅读 · 0 评论 -
mavsdk_server编译iOS平台openssl无法编译通过解决
2.如果报curl库编译不过,设置下面环境变量(先下载并编译安装curl)找到third_party/cares/CMakeLists.txt。原创 2024-07-24 10:32:56 · 170 阅读 · 0 评论 -
MAVSDK动态库与静态库及mavsdk_server程序macOS平台编译与安装
由-DBUILD_SHARED_LIBS=OFF变成-DBUILD_SHARED_LIBS=ON。运行mavsdk_server报库找不到。动态库编译方法与静态库相同,只是参数不同。成功生成libmavsdk.a。makefile 生成成功。中间会编译Openssl。生成makefile。指定路径,再次执行成功。生成makefile。原创 2024-07-13 16:56:58 · 653 阅读 · 0 评论 -
使用UDP通信接收与发送Mavlink2.0协议心跳包完整示例
pymavlink.tools.mavgen表示mavlink目录下的pymavlink/tools/mavgen.py文件。message_definitions/v1.0/common.xml表示生成Mavlink协议的模板文件。--output=generated/include/mavlink/2.0表示输出路径。--lang=C 表示生成支持C语言的Mavlink协议。4.生成Mavlink库,支持在CMAKE中使用。2.进入mavlink目录,安装依赖。3.生成Mavlink的C头文件。原创 2024-07-12 21:49:27 · 885 阅读 · 0 评论 -
MAVSDK示例takeoff_and_land编译与使用
1.克隆MAVSDK源码 ,示例位于源码的examples中。启动程序 ,连接成功,向PX4发指令。3.设置示例工程MAVSDK路径。提供14550给QGC连接。2.安装MAVSDK,下载。提供14540给程序连接。7.启动PX4模拟器。6.添加编译配置参数。原创 2024-07-11 15:17:57 · 342 阅读 · 0 评论 -
MAVSDK之windows平台编译
MAVSDK之windows平台编译原创 2024-07-11 11:20:45 · 335 阅读 · 0 评论 -
libevent源码跨平台编译(windows/macos/linux)
使用管理员身份运行powershell进入build目录执行cmake --install . 进行安装。生成编译配置成功,已支持OpenSSL,MbedTLS,Zlib 这三个库。默认不支持OpenSSL,MbedTLS,ZLIB这三个库。已支持OpenSSL,MbedTLS,ZLIB库。重新生成libevent工程的makefile,重新生成libevent工程的makefile,增加使用Winget安装OpenSSL。编译MbedTLS库时记得加上。开始编译libevent。下载完成会自动运行安装。原创 2024-06-02 02:02:59 · 897 阅读 · 1 评论 -
MbedTLS源码跨平台编译(window/macos/linux)
出现上面原因是克隆下来的library与programs及tests目录少文件了,直接下载zip包替换library目录。安装:(使用管理员身份运行PowerShell)如https无法克隆,使用http。cmake ../生成配置时出错。添加OpenSSL环境变量。替换programs目录。替换library目录。原创 2024-06-02 00:11:38 · 767 阅读 · 0 评论 -
JsonCpp源码跨平台编译
2.windows下jsoncpp源码编译。克隆jsoncpp源码。使用CMake进行编译。编译生成并运行测试OK。生成makefile。生成makefile。生成makefile。原创 2024-06-01 16:17:01 · 279 阅读 · 0 评论 -
Android调用C++函数
Android调用C++函数原创 2024-05-08 11:58:48 · 416 阅读 · 0 评论 -
C++插入排序算法完整Demo
C++插入排序算法完整Demo。原创 2024-02-21 17:11:52 · 74 阅读 · 0 评论 -
ESP8266模块双模式(AP+STA)共存同时与电脑及手机进行UDP通信
运行编译好的udpserver会循环打印接收到的ESP8266模块发送过来的UDP包。6.ESP8266模块向iOS应用发送UDP数据,iOS应用显示接收到的数据包。此时Arduino IDE的串口监视器会一直打印接收到的UDP数据包中的字符串。手机连接ESP8266提供的热点WIFI_ESP8266_AP_STA。电脑上创建一个UDP服务程序,接收ESP8266模块发送的UDP数据包。运行编译好的udpclient会循环向ESP8266模块发包。5.ESP8266模块向电脑发送UDP数据包。原创 2024-01-22 20:03:40 · 819 阅读 · 0 评论 -
C++在类中使用队列Queue
C++在类中使用队列Queue。原创 2024-01-12 16:58:20 · 128 阅读 · 0 评论 -
C++在结构(Struct)中使用队列(Queue)
C++在结构(Struct)中使用队列(Queue)原创 2024-01-11 14:05:10 · 639 阅读 · 0 评论 -
C++在类中实现栈功能
C++在类中实现栈功能。原创 2024-01-11 10:03:04 · 229 阅读 · 0 评论 -
c++实现支持动态扩容的栈(stack)
c++实现支持动态扩容的栈(stack)原创 2024-01-09 22:52:58 · 623 阅读 · 0 评论 -
c++在结构(Struct)中使用栈(Stack)
c++在结构中使用栈(Stack)原创 2024-01-09 21:49:37 · 385 阅读 · 0 评论 -
macosx使用vector实现循环队列
macosx使用vector实现循环队列原创 2024-01-09 17:10:32 · 340 阅读 · 0 评论 -
C与C++队列实现
C与C++队列实现。原创 2024-01-08 15:45:21 · 625 阅读 · 0 评论 -
xcode中使用printf与snprintf格式化输出
5.snprintf不能使用const char * 做为第一个参数。2.使用sprintf格式化字符串。原创 2023-10-21 15:38:54 · 594 阅读 · 0 评论 -
C++通过JNI调用JAVA方法返回ArrayList对象
获取系统已安装应用列表并返回List对象。在JAVA中调用JNI原生方法。原创 2023-08-26 22:26:44 · 1457 阅读 · 0 评论 -
Android基于JNI的Java与C++互调
包名:com_example_getapplist 类名:MainActivity. 函数名:stringFromJNI。函数名格式 Java_包名_类名_函数名(包名.替换为_)原创 2023-08-26 12:45:30 · 909 阅读 · 0 评论 -
编译libtiff库给IOS平台用
克隆成功并打开libtiff目录,发现有autogen.sh 与CMakeLists.txt所以可生成Configure程序来配置并编译,也可直接使用CMake-GUI来配置编译,选择其中一种。接着cmake --build . && cmake --install .然后点击Configure,点击Generate生成makefile。安装成功 : cmake --install .配置出现下面错误,先点击OK,然后再调整配置。编译: cmake --build .提示要创建文件夹,点击Yes。原创 2023-07-15 11:32:09 · 274 阅读 · 0 评论 -
编译libjpeg-turbo库给IOS平台用(包含libjpeg与libturbojpeg)
现在可在IOS平台使用libjpeg.a,libjpeg.dylib,libturbojpeg.a和libturbojpeg.dylib库了。进入libjpeg-turbo目录,发现存在CMakeLists.txt,所以使用CMake-GUI来配置并生成库。使用lipo与otool查看生成库类型与依赖,确认输出类型为arm64。点击congifure生成配置,提示要创建文件夹,点击Yes。生成内容成功输出到libjpeg_out目录。点击Generate生成Makefile。makefile生成成功。原创 2023-07-15 10:12:48 · 368 阅读 · 0 评论 -
编译zlib库给IOS平台用
在弹出的下面对话框中选择Unix Makefiles ,然后点击(Done)完成。使用 lipo与otool查看库类型为arm64,现在可在ios平台使用该库了。zlib自带CMakeLists.txt 所以用CMake-GUI来生成。修改为与系统当前安装的cmake版本 (如:3.22.1)选择zlib源码目录及输出目录,输入下图的CMAKE参数。点击Configure,在弹出的对话框中选择Yes。cmake --install . 进行安装。cmake --build . 进行编译。原创 2023-07-15 00:41:17 · 640 阅读 · 0 评论 -
编译给IOS平台用的liblzma库(xz与lzma)
使用otool -L liblzmadec.a 或者otool -L liblzmadec.dylib 可查看库依赖。执行./autogen.sh生成configure配置程序。查看configure用法 ./configure -h。安装到配置目录`pwd`/Framework/lzma。到这里旧版本的工程已编译OK并可在IOS平台使用了.执行上面脚本开始生成makefile。执行下面指令生成makefile。先进行已下载好的lzma目录。成功生成makefile。原创 2023-07-14 22:04:48 · 948 阅读 · 0 评论 -
android原生工程测试opencv库与opencl功能
1.jni原生工程main文件夹中创建jniLibs。如果找不到C++_Shared添加下面内容。2.复制opencv库到jniLibs。头文件直接复制出来外面,不然识别不了。发现找不到libOpenCL.so。3.复制opencv头文件。编译OpenCL-SDK。增加libOpenCL权限。原创 2023-07-06 22:04:35 · 367 阅读 · 0 评论 -
编译Android平台的OpenCV库并启用OpenCL及Contrib
准备环境与工具: ANDRIOD SDK 与 NDK ,CMAKE ,NINJA ,GCC,G++ ,MAKE。修改ndk-18-api-level-21.config.py,注释掉armeabi-v7a,x86_64,x86。生成过程中输出的SDK,NDK,CMAKE,NINJA,OPENCV版本号,及编译ABI。1.下载好OpenCV与OpenCV_Contirb 版本: 4.7。使用的C与C++编译器及PYTHON位置。编译时使用的参数与已启用的功能。编译平台及目标运行平台。原创 2023-07-05 20:57:28 · 736 阅读 · 0 评论 -
解决QtCreator安卓平台原生C++代码无法输出日志问题
问题: 在QtCreator中只看到qDebug输的日志,并没有看到 cout,cerr,printf的输出日志。1.需求,因原生C++调用std::cout ,std::cerr,及C函数prinf输出要显示在控制台,调用安卓原生C++函数输出日志代替std::cout,std::cerr与printf。在Android Studio 的Logcat中显示了C++原生日志。在QtCreator中显示了C++原生日志。在自己的原生工程中定义日志输出宏。在QtCreator中调用输出。原创 2023-07-02 14:31:02 · 410 阅读 · 0 评论