![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
常用问题解决
文章平均质量分 54
浪小满
我誓将心献学术,尽心尽力耗此生。
展开
-
解决C++工程中调用FFMPEG库报接口undefined reference问题
因此总结如下:在C++的开发工程中调用C接口,编译链接遇到接口“undefined reference”的问题,在确保相关接口确实导出到库中是,一般是代码中C++与C接口调用兼容性的问题,可以通过在include头文件增加extern C的标识即可解决。1、想到ffmpeg是C语言编写的库,单独写个调用的测试源文件,例如main.cpp,调用相关接口,编译就报上述描述的问题,尝试将main.cpp修改为main.c,编译,发现编译成功。重新编译工程,发现编译通过。相关的接口导出形式如上。原创 2022-10-19 20:14:30 · 1064 阅读 · 0 评论 -
std::shared_ptr作为函数形参,通过值传递、引用传递的问题解答
,结合看了一些开源代码的实现,并没有满足这个建议进行实现,于是做出了自己的思考,现在编译优化,以及智能指针和引用传递的特点,应该不影响智能指针引用计数的变化,及引用传递时,只是一个别名,使用前后,不改变智能指针的使用计数,从而定义函数接口时,使用值传递和引用传递都不受影响,除非使用者在接口调用前后,或者调用的接口内部,自己强行delete智能指针的空间,或者修改其使用计数。原创 2022-09-23 22:29:51 · 2919 阅读 · 2 评论 -
Linux-X86和Linux-ARM编译binutils
工程开发中需要用到binutils里面相关工具,例如库和进程分析工具的nm、addr2line等,某些环境下可能没有这些工具,于是需要自己安装,这里记录一下安装过程,详细讲解了Linux-X86和Linux-ARM环境下的编译安装过程。2.Linux-ARM环境,以gcc-linaro-6.5.0-2018.12-x86_64_aarch64-linux-gnu交叉工具链为例。Linux-ARM中修改系统时间(中国区东八区,设置时间应该-8小时)--with-gmp的值为上文gmp安装的路径。原创 2022-09-13 21:55:09 · 2158 阅读 · 0 评论 -
linux下使用backtrace记录程序崩溃时的堆栈信息,并进行分析
在项目软件代码开发中,当软件代码量多了后,由于各种疏忽和编码审查不严格,导致代码中存在缺陷,程序运行后总是有各种异常出现,严重的导致程序崩溃,这个时候就期望能够在程序崩溃时,记录异常点相关的堆栈信息,用于对异常的分析,常见的方法有在系统中配置程序崩溃生成coredump文件,后续用gdb分析,这种方法需要了解gdb常用指令,并且涉及到修改了系统的一些配置,同时release版本下,有时候用gdb分析不一定有效,因此本文通过软件代码实现,简单记录程序崩溃的信息,主要使用到的是backtrace、abi::..原创 2022-05-19 16:39:34 · 4456 阅读 · 0 评论 -
获取某进程cpu占用状态等信息,并保存到文件 linux (ubuntu)
最近工作中,需要对开发的程序进行性能测试,记录该进程的cpu、磁盘占用的等信息,并能够将该信息保存到文件中,便于后续查询和分析,于是编写了个脚本,适应linux系统,验证环境为ubuntu。获取进程的pid信息指令为:#name为进程的名称pid=$(pidof name)之前的博客里面有写道查询进程的信息指令为:#pid为进程的idtop -p pid单次信息输入到文件中(信息会覆盖),也可使用下面的指令:#name为进程的名称top -n 1 -b |grep -E原创 2022-02-18 21:29:54 · 4052 阅读 · 0 评论 -
std::thread使用出现pure virtual method called问题的解决
最近在arm环境下,编译程序运行时出现:pure virtual method calledterminate called without an active exceptionAborted的问题,查阅后,主要是由于编译工具链编译参数配置不正确导致的,解决方案编译时增加-D__GCC_HAVE_SYNC_COMPARE_AND_SWAP_{1,2,4}的配置。具体为:arm-oe-linux-gnueabi-g++ -std=c++11 -D__GCC_HAVE_SYNC_C原创 2021-07-28 10:47:56 · 616 阅读 · 1 评论 -
vcpkg编译库位数总结
vcpkg的优点如下:自动下载开源库源代码源码包的缓存管理和版本管理,可以升级版本轻松编译依赖关系检查(比如编译libcurl,会自动下载zlib、openssl进行编译)无缝集成Visual Studio,不需要设置库文件、头文件的所在目录,自动集成。Visual Studio全平台支持,不仅支持Debug/Release、x86/x64编译,还支持UWP、ARM平台的编...原创 2021-06-01 14:49:23 · 905 阅读 · 0 评论 -
MongoDB学习笔记(3)——ubuntu16.04环境下编译mongocxx-driver
一、环境和编译包说明:1、mongodb driver说明网址http://mongocxx.org/;2、mongc-driver为:mongo-c-driver-1.17.3.tar.gz3、mongcxx-driver为:mongo-cxx-driver-r3.6.2.tar.gz4、boost库为(非必须,vs2017编译时需用到,其余暂无用到):boost_1_74_0.7z,路径为:https://www.boost.org/users/download/5、cmake下载路原创 2020-12-15 17:19:33 · 710 阅读 · 0 评论 -
MongoDB学习笔记(2)——使用VS2017编译mongocxx-driver
一、环境和编译包说明:1、mongodb driver说明网址http://mongocxx.org/;2、mongc-driver为:mongo-c-driver-1.17.3.tar.gz3、mongcxx-driver为:mongo-cxx-driver-r3.6.2.tar.gz4、boost库为(非必须,vs2017编译时需用到,其余暂无用到):boost_1_74_0.7z,路径为:https://www.boost.org/users/download/5、cmake下载路原创 2020-12-15 16:54:12 · 334 阅读 · 0 评论 -
使用Windbg分析Windows程序崩溃
以下步骤适用与分析独立运行后产生dump文件的程序或者使用Windbg监视运行的程序崩溃。如果生成了dump文件:1、将崩溃文件(dmp)和崩溃的程序(exe)及其对应的pdb文件放到同一个目录,例如:F:\dump;2、打开windbg;3、点击菜单file->open crash dump,打开dmp文件;4、点击菜单file->symbol file path,填入符号文件路径: F:\dump;SRV*F:\dump*http://msdl.microsoft原创 2020-08-27 11:20:44 · 2681 阅读 · 0 评论 -
解决windows编译的程序运行时报loadlibrary failed with error 126的问题
最近写了一个程序,用到了opengl相关的库,发布运行的时候报了loadlibrary failed with error 126的问题,网上很多拷贝atio6axx.dll或者注册表的解决方法,但是尝试过都失败了。最近想到是不是由于双显示卡的问题。进入计算机-->管理-->设备管理器-->显示适配器中,禁掉一个显示卡,一般保留AMD Radeon这个既可以。重新运行程序,程序即可运行正常。...原创 2020-08-25 11:14:58 · 8495 阅读 · 4 评论 -
CentOS 7 gcc 4.8.5升级到版本 5.4.0【修改】
转载加修改:原文地址:CentOS 7 gcc 4.8.5升级到版本 5.4.0文中步骤修改说明:mkdir gcc-build-5.4.0cd gcc-build-5.4.0/usr/local/src/gcc-5.4.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multi...原创 2020-03-19 14:24:07 · 974 阅读 · 0 评论 -
OpenSSL库编译程序网站
OpenSSL库编译程序网站http://slproweb.com/products/Win32OpenSSL_Full_01.html原创 2019-11-12 16:15:10 · 143 阅读 · 0 评论 -
int float写入字节数据各字节序的实现
int与字节数组转换比较简单,用变量位与oxff等和移位即可实现,因为变量位与0xff等已经不受计算机cpu大小端序的影响,可直接实现,如:#define BYTE0_LITTLEEND(val) static_cast<unsigned char>((val) & 0xFF)#define BYTE1_LITTLEEND(val) static_cast<uns...原创 2019-11-04 14:28:06 · 839 阅读 · 0 评论 -
C++类型转换总结
总结:1、去除const属性用const_cast;2、基本类型之间转换用static_cast;3、多态类之间的类型转换用daynamic_cast;4、 不同类型的指针类型转换用reinterpret_cast。网络其他作者的博客,可参考这个博主的文章:https://blog.csdn.net/qq_40421919/article/details/906772...原创 2019-10-17 13:48:01 · 116 阅读 · 0 评论 -
一个可以地址和各种格式的经纬度查询互换的网址,支持百度、高德、Google等地图对比查询。
最近找到一个可以地址和各种格式的经纬度查询互换的网址,支持百度、高德、Google等地图对比查询。http://www.gpsspg.com/maps.htm原创 2016-12-22 23:17:12 · 3321 阅读 · 3 评论 -
C#的结构体中定义byte[]对应C++中char[]的方式
项目中经常遇到C#工程调用C++工程生产的.dll文件,其中涉及到结构体参数的传递,C#中byte[]对应C++中char[],如果使用错误,程序运行时会报托管崩溃,堆栈信息不对称的问题,解决方法是定义结构体时使用[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 32, ArraySubType = UnmanagedType.I1...原创 2018-03-07 20:42:14 · 2422 阅读 · 0 评论 -
读取IntPtr中内容并赋值到string中 C#中
C#中一般用IntPtr来接收C++中的指针,其内容和C++中指针指向的地址内容一致,当需要在C#中读取数据时,可采用以下的方式:IntPtr pData = new IntPtr();int iDataLen = 64;......byte[] byData = new byte[128];Marshal.Copy(pData, byData, 0, iDataLen);string...原创 2018-03-11 19:39:57 · 8110 阅读 · 0 评论 -
VMware workstation创建虚拟机不支持64位操作系统的问题解决方案
前提:实体PC是x64框架,并且安装了64位windows系统(本文是win10系统)。问题:使用VMware workstation创建64位虚拟机时,在该页面显示如下“客户机不支持64位...”如果不管这个问,创建的虚拟机,在启动时报错,导致启动失败。解决方案:前提:pc支持64位框架。1、进入bios中确定intel(R) vitualization technology状态,disable...原创 2018-05-10 10:07:18 · 26477 阅读 · 14 评论 -
linux和arm下查看某进程的使用情况
cat /proc/pid/status 可以查看进程的运行情况;其中:VmSize表示虚拟内存大小,VmRss表示实际内存大小,Threads表示线程数如:cat /proc/2083/status原创 2019-02-20 12:11:26 · 2778 阅读 · 0 评论 -
QtCreator工程依赖第三方动态库(.so)编译报undefined的问题解决方法。
问题描述:代码工程中应用App1依赖Lib1编的动态库(.so),Lib1编译依赖第三方动态库SharedLibB.so,在编译整个工程编译时,报:xx.so,not found(try using -rpath or -rpath-link)undefined refrence to xxxxxFunc1 (注意:为SharedLibB.so中的防范)undefined ref...原创 2019-04-19 15:01:03 · 2590 阅读 · 3 评论 -
在头文件中typedef C/C++源文件struct指针问题
问题描述这就是一个结构体前置声明使用的问题,具体为:1、在a.cpp里面定义了结构体如下:struct stA{ int iVal;};2、在b.h中需要将strA指针作为形参传入某个接口,但是调用者可以不关心这个结构体的信息,如:typedef struct stA* pstADef;void func(pstADef pst);3、在main.cpp里面调用这个接...原创 2019-09-23 14:41:31 · 1846 阅读 · 0 评论 -
解决“计算机类型X86与目标计算机类型X64冲突”的问题
VS编译工程时出现“计算机类型X86与目标计算机类型X64冲突”问题,提供解决方案:英文error提示“module machine type 'x86' conflicts with target machine type 'X64'”1、在项目属性链接(Linker)的命令行(Command Line)中其他选项(Additional options)中填写x86对应:%(原创 2017-12-22 21:52:50 · 4591 阅读 · 0 评论 -
C++中printf、sprintf等函数读写64位字节数据类型
有网友介绍的读写64位(8字节)的数据类型,使用%ld,但是实际中,并不能读取到,通过检验,应该要用%lld才可以,实例如下:__int64 lVal = 1511419995976;printf("long value: %lld\r\n", lVal);原创 2017-11-26 21:44:01 · 4319 阅读 · 0 评论 -
char* 转 WCHAR,解决char* 转 LPCWSTR错误的问题
直接见代码:char* pFileName = "./test.txt";WCHAR wszFileName[MAX_PATH] = { 0 };MultiByteToWideChar(CP_ACP, 0, pFileName, strlen(pFileName) + 1, wszFileName, sizeof(wszFileName) / sizeof(wszFileName[0]))原创 2017-12-13 23:12:06 · 660 阅读 · 0 评论 -
在PreTranslateMessage中处理mouse move的消息,解决Picture Control设置notify为true之后与对话框OnMouseMove冲突的问题
在PreTranslateMessage中处理mouse move的消息,解决Picture Control设置notify为true之后与对话框OnMouseMove冲突的问题MFC中 监听OnMouseMove,当鼠标在Picture Control控件对应的rect区域时,更换Picture Control控件中显示的图片,但是当Picture Control控件的notify属原创 2017-02-07 22:43:37 · 1696 阅读 · 0 评论 -
Jni中执行ndk-build,编译第三方静态库(.a)和动态库(.so)的Android.mk文件写法
Jni中执行ndk-build,编译第三方静态库(.a)和动态库(.so)的Android.mk文件写法Android Studio编译JNI接口,当需要调用第三方静态库或者动态库时,正确配置Android.mk文件(jni文件夹中)中是生成自己库的关键,下面是ndk-build执行所需的Android.mk文件文件内容,可做为一个例子,其中Add与Sub做为两个动态库引入,Mul与D原创 2017-01-16 00:07:38 · 5174 阅读 · 0 评论 -
AndroidStudio2.2.3 JNI与NDK开发之一:生成可调用.so库
AndroidStudio2.2.3 JNI与NDK开发之一:生成可调用.so库网友前辈总结的一种方法,直接用Android Studio中ndk与CMake实现,见博主文章AndroidStudio2.2开发NDK的正确姿势本文选用的是用ndk和.mk文件实现编译生成.so。首先需要确保电脑中配置了ndk环境变量,这里不赘述,需要的网友可以自己百度,比较简单。本文选用ndk版本为r9。原创 2016-12-29 23:47:13 · 5862 阅读 · 5 评论 -
AndroidStudio2.2.3 JNI与NDK开发之二:生成可调用jar包
本文是继前文 AndroidStudio2.2.3 JNI与NDK开发之一:生成可调用.so库的跟进文章 主要用于解决生成的.so库中,jni的方法名有包名的限制,导致其他项目工程引用时,包名不一致,出现jni层接口调用无效的问题。即,A项目的a.so,在B项目使用时,报uncaughtException的错误,导致程序崩溃。uncaughtException原创 2016-12-31 00:05:37 · 3293 阅读 · 1 评论 -
JNI 导入.a库和编译.so的makefile(.mk)文件编写
Android Studio中当用到jni层编码时,结合ndk-build,编译.so库是需要.mk文件,常用的语句网上都比较多,本文解决静态库加载编译的问题。首先注明一点,代码编译依赖库一般分为静态库(如.a、.lib)和动态库(如.so、.dll),其中window系统上编译出的一般为.lib和.dll,linux系统一般为.a和.so。安卓app中调用,一般是支持linux系原创 2017-01-06 22:21:04 · 2458 阅读 · 0 评论 -
将GPS传感器数据度分秒转化为一个秒*100倍之后的数据转化为google地图上的经纬度
GPS传感器得到的数据为d°m′s″,进行数据传输时需要转化为秒*100的一个比较大的数据,转换公式如下:数据data=(度*3600+分*60+秒)*100 。比如30°24′18.12″转化为秒是:30°24′18.12″=30*3600+24*60+18.12=109458.12″,变为int值传递则乘以100变为10945812。原创 2016-11-26 22:43:41 · 2508 阅读 · 0 评论 -
Android应用ViewPager和TabLayout动态加载Fragment,并实现view和tab动态刷新。
Android应用ViewPager和TabLayout动态加载Fragment,并实现view和tab动态刷新。原创 2016-12-01 23:35:22 · 9786 阅读 · 9 评论 -
Andrid Studio 2.2以上版本导入Module的两种方法
Andrid Studio 2.2以上版本导入Module的两种方法本文提供两种方法实现AS2.2以上版本导入module。 方法1:按Import module的方式,一步步实现(网上常用);方法2:配置项目的settings.gradle;原创 2016-11-13 15:01:07 · 1947 阅读 · 0 评论 -
“输出下一秒”
题目:输出下一秒输入如:2015/02/09 15:58:59,或者2015/2/9 5:6:12 输出入:2015/02/09 15:59:00或者2015/02/09 05:06:13原创 2015-09-12 01:02:57 · 563 阅读 · 0 评论 -
CString 转char *并且解决中文乱码的问题
很多网友给的CString 转char *的方式如下:CString str=_T("abcdf");char *ptr=str.GetBuffer(str.GetLength());str.ReleaseBuffer();ptr得到的是a;各种烦恼,最后本人自己写了一段代码,如下:CString str=_T("abcdf");char *des=new原创 2017-02-18 23:27:27 · 5836 阅读 · 0 评论 -
MFC用代码实现屏蔽ESC和Enter键按下,对话框窗体关闭或者消失的问题
新建的MFC对话框项目,去掉默认对话框中的确定和取消按钮,但是编译启动窗体之后,按下enter键,窗体还是会关闭。为了解决这个问题,可以在代码中添加代码,屏蔽enter键按下的效果响应。由于MFC对话框之间状态由PreTranslateMessage这个函数接口进行消息的传递,于是解决这个问题,可以考虑从PreTranslateMessage入手。按下enter键和esc键,窗体默认执行到On原创 2017-04-04 20:20:56 · 966 阅读 · 0 评论 -
MSCOMM32串口编程循环读取数据
MSCOMM32中设置接收字节数触发事件使用m_mscommCtrl.put_RThreshold(1);表示串口接收到一个字节就触发接收事件,于是需要接收时循环接收数据知道没有数据。代码如下:BEGIN_EVENTSINK_MAP(CMSCommMFCDemoDlg, CDialogEx) ON_EVENT(CMSCommMFCDemoDlg, IDC_MSCOMM1, 1, CMSC原创 2017-10-29 22:12:00 · 1330 阅读 · 0 评论 -
sqlite3 实现批量处理 sql语句,避免频繁操作数据库,从而影响性能的问题
sqlite3 实现批量处理 sql语句,避免频繁操作数据库,从而影响性能的问题。C++语言,begin开始事务,commit提交事务处理。int SQL_EXE(std::vector vtExeSql){ if (NULL == m_pDB) { return -1; } char* pErrMsg = NULL; int iRet = SQLITE_OK; iRet =原创 2017-09-22 20:56:59 · 8979 阅读 · 0 评论 -
mfc中设置statictext的字体和颜色
字体在控制事件中实现,颜色在OnCtlColor中实现。界面上两个button,一个statictext。设置statictext的value变量为m_csText;其余变量为:BOOL m_bBlue;BOOL m_bRed;在构造函数中初始化:CTextColorExampleDlg::CTextColorExampleDlg(CWnd* pParent原创 2017-08-05 23:48:34 · 17980 阅读 · 5 评论 -
mfc中设置listcontrol某一行的背景和文字颜色
MFC中用到listcontrol控件,可能会根据内容显示颜色。本文提供一种方式:listcontrol设置为report格式,根据内容设置某一行的背景和文字颜色。具体用listcontrol的SetItemData设置某一行的属性,通过自定义属性标识实现。注:暂时只找到了设置一行的颜色,但是不能做到设置某一个单元格的颜色,如果有网友知道设置某一个单元格的颜色解决方案,欢迎交流,谢谢。原创 2017-08-05 22:35:24 · 27196 阅读 · 27 评论