VS
文章平均质量分 80
LostSpeed
c++ coder
展开
-
VS - regsvr32.exe的官方工程
如果是要使用COM DLL, 必须先注册。一般手工注册就要调用regsvr32.exe xx.dll但是控制的不够细,且一般来说,也就只能通过安装程序来注册COM DLL.如果是一个绿色版程序集合(e.g. 解压版的程序包),启动主程序后,先判断是否能正常操作COM DLL,如果不能,则自己先在程序实现里面,将解压包内自带的COM DLL先注册一下,再使用COM DLL。如果是这种场景的话,用系统自带的regsvr32.exe来注册COM DLL, 显然不能达到目的。原创 2024-06-16 13:07:40 · 523 阅读 · 0 评论 -
warning LNK4017: DESCRIPTION 语句不支持目标平台;已忽略
基于ATL的COM DLL导出函数,无法用__declspec(dllexport)直接在函数上标记为导出函数。只能用.def加入工程配置中。原始工程是VC6的。;warning LNK4017 : DESCRIPTION 语句不支持目标平台;已忽略现在用VS2019编译, 工具链降到VS2013都有这个警告。查了一下,大家都说注释掉DESCRIPTION那行就行。试了一下,确实可以。但是,为啥呢?难道新版VS的编译器已经不支持.def文件中的DESCRIPTION关键字了么?原创 2024-06-15 17:19:58 · 488 阅读 · 0 评论 -
vs - vs2015编译gtest-v1.12.1
前几天,有个同学私信我,问我在不在?你谁啊,我在不在关你啥事啊?我们认识么?我们熟么?凭啥理你啊?秒删。今天碰巧看到他在csdn上留的帖子,大概知道他要解决啥问题了。他遇到的问题是用VS2015编译gtest1.12.1编译不过。他提问题的方式有问题。只说不行(如果行你就不提问题了)。哪里不行啊?具体啥现象啊?你具体咋操作的, 引起的不行啊?就说不行,谁知道哪不行啊?这样的帖子,除了吃饱了撑的2B, 谁会去回帖?原创 2024-06-09 12:52:00 · 1035 阅读 · 0 评论 -
vs2013 - 打包
为了避免UCRT安装的问题,将手头的VS2019工程降为了VS2013.现在到了打包的环节。查了一下,如何方便的打包VS2013的程序输出。原创 2024-06-08 14:52:09 · 822 阅读 · 0 评论 -
vs - vs2013中编译sqlite3.44.2
以前在vs2019下编译了sqlite3.44.2, 好使。做了笔记(sqlite3.44.2的编译现在准备将手头的vs2019工程改为vs2013的,自然要将sqlite也编译为vs2013版本的。按照原来的笔记编译,不好使。估计是TCL不是VS2013版本的。准备按照官方说明,用VS2013从头编译一次。官方的编译文档为 D:\3rd_prj\sqlite\doc\compile-for-windows.md. 是按照vs2022 + win11 来描述的。原创 2024-06-06 11:34:20 · 1092 阅读 · 0 评论 -
vs2019 - 去掉工程输出生成.ilk, .idb的方法
默认建立的VS工程的debug版,会生成.idb文件。不想要这种文件的输出,主要是看着难受.原创 2024-06-05 11:54:13 · 435 阅读 · 0 评论 -
vs - vs2013/vs2019工程文件的区别
为了避免安装UCRT的问题,想将手头的vs2019工程降级为vs2013工程。不想重新建立vs2013工程,太麻烦了, 烦人。想着能不能将vs2019的工程文件改一下,就能用vs2013打开直接编译呢?尝试一下。原创 2024-06-04 12:41:13 · 571 阅读 · 0 评论 -
vs - ms官方查看pdb文件内容的例子工程
不管哪个版本的VS,生成debug版工程时,除了工程自己的.pdb还会有vc*.pdb.因为这些vc*.pdb不是全局的pdb, 而是每个工程独有的。就想看看这些同名的.pdb内容有啥不同。先去找了一下,是否有公版的工具。最开始在github上看到了PDBExp,都是从titilima的工程来的,工程都编译不过。原因是PDL库版本的问题和WTL版本的问题,折腾了好久,始终编译不过。这些作者都没有将依赖的PDL库和WTL版本自包含在工程中,也就他们自己用的爽。原创 2024-06-03 17:09:11 · 687 阅读 · 0 评论 -
vs - 设置工程输出宏
可以将工程输出目录,工程临时目录,目标文件名都设置为VS的宏。然后将所有配置的这3项都设置成一样,那么不同配置的编译输出也不会重复,非常方便。这样规则下的工程输出文件名,也有利于在其他工程中包含,不会将版本弄错。原创 2024-06-01 18:44:33 · 520 阅读 · 0 评论 -
vs - 在win10中安装vs2013update5
用VS2019写的程序,在早期windows(e.g. win7, win8.1)上安装时,需要UCRT。UCRT是操作系统的一部分,如果不是最新的早期windows, 必须安装补丁。这让用户就很不爽了。软件说明书要在安装这块写很多关于各种早期windows安装时,如何安装补丁的说明。查了一下, UCRT是VS2015引入的。如果想避免UCRT安装的问题, 程序就只能用VS2013写。原创 2024-06-01 14:51:00 · 1030 阅读 · 0 评论 -
vs2019 - 打包(开发机win10x64 - 目标机win7x64 - debug版程序)
一般打包时,需要将工程输出都编译成release版。但是我想先试试debug版,做个debug版的安装包。安装到测试机上,如果有问题,可以看到debug版的断言。用vs2019setup工程默认打包后的安装包,因为只有自己应用相关的文件,到新的测试环境后,是无法正常运行的。e.g. 刚安装完的win7x64旗舰版。运行自己的应用,总会少vs2019自己的dll.这时,应该在setup工程中添加vs2019自己的组件,保证自己应用的vs2019环境是全的。重新打个包。原创 2024-05-24 15:39:59 · 1274 阅读 · 0 评论 -
vs2019 - 打包 - WARNING: File ‘‘ targeting ‘x64‘ is not compatible with the project‘s
尝试用VS2019自带的setup插件打包,有警告,如下------ 已启动全部重新生成: 项目: caseSetupPrj, 配置: Debug ------要打包的程序都是x64的。看提示,打包工程是x86的。试了一下,没看到怎么将打包工程改为x64.看了前排同学的笔记,没找到他们说的工程属性页在哪里啊…最后才明白,将VS2019右边的属性栏固定住,再点击打包工程的节点就看到了…原创 2024-05-23 09:55:41 · 405 阅读 · 0 评论 -
vs2019 - 替换vs2019自带的cmake
在看一个开源工程,是用cmake构造的工程。想编译成vs的工程。但是cmake时,有版本要求。需要 cmake > 3.22用vs2019本地x64命令行启动的环境,看cmake的版本为3.20.这个cmake确定是vs自带的,因为我是用脚本启动的vs2019, 里面并没有cmake的环境变量。原创 2024-05-08 14:29:00 · 853 阅读 · 0 评论 -
小工具 - 用Astyle的DLL封装一个对目录进行代码格式化的工具
上一个实验(vs2019 - astyle-extension 扩展插件的编译与使用)用Astyle的vs插件,在VS中,已经可以很方便的对实现文件或者选定的代码进行格式化。正好想对自己手头要完工的工程进行入库前的全部格式化。如果在VS中,手工逐个对文件进行格式化,那就蠢的连自己都看不过去。以前做代码格式化,都是用AStyle.exe对单个文件做格式化。控制的粒度不够细,如果出了错误,也不知道啥错误。原创 2024-05-06 17:06:36 · 645 阅读 · 0 评论 -
vs2019 - astyle-extension 扩展插件的编译与使用
查资料时,看到vs2019扩展中有个astyle-extension插件。以前都是用Astyle.exe配置进VS命令行来用。既然有插件,那肯定更方便了,想试试。在vs2019(v16.11.35)的插件市场中找了一下,居然没有。估计是旧版本的旧插件市场中才有。查资料,astyle-extension 是开源的(原创 2024-05-05 13:23:48 · 1264 阅读 · 0 评论 -
vs2019 - 用自定义对话框消息框替代MessageBox
当工程被逆向时,如果存在AfxMessageBox(), ::MessageBox()的调用,是一个明显的线索。想用自定义对话框消息替代MessageBox()的API.在codeproject上,看到前辈同学已经写好了一个实现(这个实现的功能对于我的应用来说,功能太多了。将这个实现加入现有工程时,要在工程RC中添加的东西有点多。做了一个剪裁版,插入一个新工程时,方便很多。原创 2024-05-04 10:10:18 · 797 阅读 · 0 评论 -
vs2019 - 移除PE字符串表中的RTTI字符串
用IDA打开PE, 看到字符串表中有类名的字符串。查了源码,是用类向导建立的一个类(基类为CDialogEx),类向导生成了RTTI相关的模板代码引起的。如果工程中不用RTTI的特性(e.g. IsKindOf(), RUNTIME_CLASS()), 可以将RTTI的模板代码清掉,使生成的PE字符串表中没有类名的字符串。RTTI特性不是必须的,自己用类的时候,自然知道是啥类,不是非要用RTTI特性。用RTTI只是为了更方便,但是对于程序加固是不好的。原创 2024-04-29 10:44:22 · 191 阅读 · 0 评论 -
vs2019 - release版中_DEBUG宏生效的问题
在加固程序,需要去掉PE的字符串表中和逻辑相关的字符串。编译成release版后,用IDA看,还是发现有debug版才有的字符串。那明显工程是按照debug版来编译的。但是PE的体积确实比debug版小多了。为啥还是按照debug版编译的呢?编译工程的release版,为啥还是走的debug版的配置呢?看工程里面的提示,为啥_DEBUG宏是亮的呢?开始以为是VS2019的bug, 就故意将_DEBUG宏包含的库名改错,结果真走的是_DEBUG宏的判断分支。/Mdd会隐含的定义_DEBUG宏。原创 2024-04-28 12:15:26 · 308 阅读 · 0 评论 -
vs2019 - warning LNK4099: 未找到 PDB
1>xlsxwriter_debug_x64.lib(drawing.obj) : warning LNK4099: 未找到 PDB“xlsxwriter.pdb”(使用“xlsxwriter_debug_x64.lib(drawing.obj)”或在“D:\my_dev\my_local_git_prj\soft\exp\exp009TestLink4098MsvcrtLib\main\x64\Debug\xlsxwriter.pdb”中寻找);正在链接对象,如同没有调试信息一样。原创 2024-04-28 10:31:29 · 853 阅读 · 0 评论 -
vs2019 - warning LNK4098 : 默认库“msvcrt.lib”与其他库的使用冲突
在工程中看到了编译警告warning LNK4098 : 默认库“msvcrt.lib”与其他库的使用冲突;请使用 / NODEFAULTLIB : library今天想起来,验证一下问题原因。做了实验,应该就是主工程包含了编译选项不同的静态库引起的。e.g. DebugX64的主工程包含了ReleaseX64的静态库。e.g. 主工程的运行时库是/Mdd, 静态库的运行时库为/Md。原创 2024-04-27 21:30:53 · 1753 阅读 · 0 评论 -
VS - 显示预定义宏的函数
MS官方有文档(),指出了VS中的预定义宏。看起来有点用,封装了一个函数,用来检查这些预定义宏的值。在console, win32 desktop app, mfc app中都实验了,好使。原创 2024-04-04 17:03:10 · 293 阅读 · 0 评论 -
vs2019 - debug版/release版编译选项的区别
想看看debug/release版的编译选项到底有哪些区别,以便从一个已有配置为模板,建立一个新的编译输出的配置项。原创 2024-04-27 12:46:54 · 1210 阅读 · 0 评论 -
vs2019 - signtool签名和验签的手工操作
signtool是进行code sign用的工具. 装了vs2019后自带(SDK中的工具).code sign 是代码签名, 是用证书对PE文件进行签名.前面实验用openssl已经生成了自签名的证书, 现在用vs2019自带的signtool试试code sign的签名和验签.对PE文件进行了代码签名后, 在程序中的逻辑, 就可以判断自己程序的PE有没有被第三方改过.原创 2024-02-11 15:25:12 · 1772 阅读 · 0 评论 -
vs2019 - 使用IDA定位已经被捕获的异常
正在测试程序的功能, 用VS2019开着调试版跑起来. 发现程序关闭后, 在VS2019的输出窗口发现了C++异常的信息, 还不是一条.虽然不影响程序的运行, 但是心里膈应.这种异常发生了, 但是没被VS2019断下来, 说明这4个C++异常是在工程中被try-catch住的.我现在这个程序, 主动使用try-catch的地方不多. 如果在每个try-catch住的地方下断点倒是可以.但是为了普遍性, 还是要找出一种不依赖断点无脑排错的调试方法.原创 2023-12-28 17:28:31 · 506 阅读 · 0 评论 -
vs2019 - MFC对话框程序的工程名称不支持下划线命名法
正在写账单分析程序, 用MFC + 对话框.因为比较习惯下划线命名法, 就在向导中给工程名称起了一个my_test这样的名称(下划线命名法, 小写字母 + 下划线).结果向导生成不了.sln, 报错, 但是工程文件.vcxproj是有的, 如果直接打开工程文件.vcxproj, 也是能用的. 心里有点膈应.原创 2023-11-28 12:14:55 · 151 阅读 · 0 评论