
c\c++
文章平均质量分 51
分号
爱好编程、游戏、旅游
展开
-
记一次linux下的c++ arm程序调试
windows下,我习惯用IDE来开发和调试,比如用vc或者qt,但是现在碰到了需要在linux下开发调试c++的任务,当然用qt也行。不过这次的新任务,是开发一个基于ARM架构的AI识别程序,大家都懂的,不能调试,碰到BUG就很痛苦,因此在完成任务后,特地记录一下这个过程,给自己一个备忘,也给需要的朋友一个参考,有不足之处还请多多指教。原创 2025-01-14 15:13:00 · 429 阅读 · 0 评论 -
linux so 文件的一些问题
对于共享库(so文件),linux编译时和运行时的搜索顺序,可不像windows,他有他自己的规则,需要在开发的时候注意,否则发布之后,就会出现找不到库文件的错误。在开始讲解这个问题的时候,我们先来看看两个linux命令:ldd这个命令,可以查看当前库或应用程序的依赖项readelf这个命令,可以读取ELF文件的一些相关信息以上2个命令,都是查看文件信息非常重要和好用的命令,大家需要掌握。好了,我们开始讲述本文的正题吧,先假设我们有一个main.c文件,一个libA.c文件,main.c会编译原创 2022-05-23 19:29:18 · 1231 阅读 · 0 评论 -
CDHtmlDialog 拦截证书错误
最近碰到一个需求,要嵌入IE浏览器到应用程序中。在开发的过程中,碰到了需要加载HTTPS网站,而该网站的证书无效的问题。如果是直接用IE浏览器打开的话,虽然也会报错,但至少可以通过“转到此网页(不推荐)”继续访问,而CDHtmlDialog提供的嵌入式IE浏览器,则没有这个操作。当然,这是一个安全设置,正常来说不应该继续访问,要么提供有效的证书以继续访问。但是我的需求是加载一个已知的站点,需要能正常访问,那这个时候就需要拦截安全报警,忽略掉然后继续访问了。微软的官方文档翻了一遍,由于英格利希原创 2022-01-13 09:39:32 · 252 阅读 · 0 评论 -
c/c++ 与 lua 之搭建环境
这几天因项目需要,又把c/c++搬出来用了一遍(已经以.net为主了),用qt(也是现学滴)开发了一套应用程序管理框架,其中,涉及需要灵活更新对被管理的应用程序的控制的功能,思考了一下,应当找一套适合c/c++调用的脚本语言来完成,python、javascript等等我还会点点,后来发现lua也可以(我喜欢玩魔兽),好了,就它了,继续现学现用,嘿嘿。先撸完了语法,能够写几个lua脚本了,接下来就是如何嵌入c/c++程序中调用了。工欲善其事必先利其器,我撸lua的时候用的vscode,想着就用vsc原创 2021-12-11 12:07:55 · 1105 阅读 · 0 评论 -
托管C++随笔二:回调函数
在C++程序里,经常会碰到通过回调函数来返回数据的情况,那么在托管C++里如何实现回调函数呢?其实也不难,只要理解回调函数,不过是一个函数指针而已,就简单了。在托管代码里,是通过委托(delegate)来描述函数指针的,只不过这里需要注意.net的垃圾回收机制,要防止定义的委托被gc回收,否则回调函数一旦被回收或移动,那么委托指向的地址就是一个无效地址,此时C++代码里的回调调用就会失败,导致程序崩溃。1,在非托管代码里定义回调函数typedef void(__stdcall *pMyCa原创 2021-08-06 17:29:29 · 514 阅读 · 0 评论 -
托管C++随笔一:触发事件
我们在.net里写代码,会经常通过事件来处理程序流程,比如IO操作完成、失败或遇到一个特殊的数据等等,触发一个事件,然后做相应处理。那么我们在托管C++里如何实现触发事件呢?其步骤和.net里写一个事件的步骤差不多是一样的,分以下几步(我拿公司SIP通话的部分代码来讲解):一,定义一个委托你可以自定义一个委托,也可以直接使用.net框架为你预定义的专用于事件的委托,我这里自定义了一个委托。namespace AVWrapper{ public enum class SipEvent原创 2021-07-07 10:38:45 · 781 阅读 · 1 评论 -
指针常量与常量指针
指针常量就是“指向常值的指针”,其类容不能改变,但是指向的地址可以改变;常量指针就是“指向值的常指针”,其类容可以改变,但是指向的地址不能改变。1>const int *p;2>int const *p;3>int * const p;以上3中指针,1和2的写法不一样,但是作用一样,都是声明了一个指针常量,3为常量指针。int i = 1;int j = 2;对于1,2,举例如下:const int *p = &i;*p = 2; // 错误原创 2021-01-29 11:56:56 · 112 阅读 · 0 评论 -
函数前后的const
1,const int * Fun() 或者 int const * Fun();2,int *Fun() const 或者 int Fun() const;第一种,函数返回了一个常量指针,那么相应的,就必须定义一个常量指针来接收,否则编译就会报错。例: const int * i = Fun();那么这有什么好处呢?比如,函数返回的,是某个全局变量,或者是某个类的成员变量,不加上const, 那么一旦拿到了这个指针,就可以修改那个变量的值了,这可能不是你想要的。要注意的是,对于不是返回指针的,原创 2021-01-29 11:56:02 · 247 阅读 · 0 评论 -
MFC的消息处理函数
MFC的消息处理函数1.AfxWndProc() 该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc2.AfxCallWndProc() 该函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应用程序以后使用,然转载 2011-10-13 17:24:15 · 750 阅读 · 0 评论 -
多字节与宽字节设置不同导致的DLL静态链接失败
今天把以前做的一个DLL文件用静态链接方式链接到程序里去,最后编译时总是提示“无法解析的外部符号”这个错误,我仔细检查了引入库的目录设置,lib文件的导入设置,却没发现任何问题。正在郁闷时,我想起了我的DLL文件是使用的Unicode 字符集,而应用程序用的是多字节字符集,于是尝试着将其也改为Unicode 字符集,然后编译,通过了。这个问题以前还从来没注意过,现在记下来以备以后忘记了再看看。原创 2012-04-03 14:51:05 · 794 阅读 · 0 评论 -
C/C++中遍历枚举类型
通常在其他语言中,例如VB,JAVA等,都可以直接对枚举类型进行遍历,但是要在c/c++中直接遍历,就遇到问题了。那是不是C/C++中用不着遍历枚举类型呢?我个人觉得不是,因为既然其他语言中有遍历的方法,那肯定就有存在的理由,例如VB中可以使用一个函数轻轻松松拆分一个字符串,C/C++就不行,还得自己写,那好吧,那我们就自己写遍历枚举类型的方法。我选取CDialogEx里的一个枚举变量来做原创 2012-12-17 16:28:38 · 8095 阅读 · 2 评论 -
c/c++读写xml 数据
c/c++读写xml 数据 xml数据格式是现在非常流行,也非常通用的一种数据格式,在很多地方都有应用,例如网页前台后台交互数据,就可以使用xml格式。但由于c/c++原生态不支持xml的操作,导致用c/c++语言来操作xml是一件非常复杂的事情,好在很多人也在研究这个事,所以在网上可以搜到很多c/c++操作xml数据的第三方库,下面,我就来介绍其中一款:Xerces-C++ XML原创 2015-01-12 14:59:13 · 11280 阅读 · 2 评论 -
不用重建项目,就能添加ActiveX的代码文件
开发AcitveX控件时,会遇到很多麻烦的事,尤其是设计到控件代码修改后,需要在测试环境里重新加载时。微软现在版本的IDE,比如vs2010等等,对它的支持很不好,总是会出现控件加载不了,或者占用中,卸载不了的问题,当然,这些问题都还算好解决。以前碰到一个问题,就是在控件接口改变后,需要重新加载控件,然后生成新的代码文件,但是这个时候问题来了,你会发现把旧代码文件删除后,怎么加载,IDE都不会原创 2015-01-20 14:11:35 · 581 阅读 · 0 评论 -
Visual Studio 使用正则表达式查找替换
这几天在写DirectSound录音时,发现按照文档和查阅的资料写出的代码,在创建录音缓存时总是报无效的参数这个错误。我在想是不是因为音频格式未设置正确造成的,于是决定运行directx9的例子来看看究竟是什么情况。但编译时却发现,在win10下的dx9例子中有很多符号都未定义,例如DXTRACE_ERR_MSGBOX,而我又懒得修正这个错误,于是决定先注释掉它,反正我只想看看运行到创建录音缓原创 2016-11-19 10:44:12 · 4581 阅读 · 0 评论