
VC
文章平均质量分 53
单名一个宏
简简单单,踏踏实实,敲着代码听着歌!
展开
-
vs运行库MT/MTd/MD/MDd区别
1.编译选项的位置:属性->C/C++->代码生成->运行库2.选项代表的含义:简而言之,/MD表示运行时库不集成,生成的文件小;/MT表示运行时库集成,生成的文件较大。3.如何选择选/MD的理由:文件小,使用的是同一个堆,不存在A申请,B释放的问题;选/MT的理由:移植性好,减少依赖。4.可能出现的错误:错误 23 error LNK...原创 2018-11-16 18:26:32 · 2261 阅读 · 0 评论 -
__cdecl、__fastcall、__stdcall、thiscall与__declspec
__cdecl、__fastcall与__stdcall,三者都是调用约定(Calling convention),它决定以下内容:1)函数参数的压栈顺序,2)由调用者还是被调用者把参数弹出栈,3)以及产生函数修饰名的方法。1、__stdcall调用约定:函数的参数自右向左通过栈传递,被调用的函数在返回前清理传送参数的内存栈。2、__cdecl是C和C++程序的缺省调用方式。每...原创 2018-11-16 19:18:34 · 323 阅读 · 0 评论 -
无法解析的外部符号__imp__fprintf和 __imp____iob_func,SDL2
1>SDL2main.lib(SDL_windows_main.obj) : error LNK2019: 无法解析的外部符号 __imp__fprintf,该符号在函数 _ShowError 中被引用1>SDL2main.lib(SDL_windows_main.obj) : error LNK2019: 无法解析的外部符号 __imp____iob_func,该符号在函数 _Sh...原创 2019-06-13 16:06:14 · 3522 阅读 · 4 评论 -
Visual Studio installer Projects生成的安装包提示已安装该产品的另一个版本
利用Visual Studio installer Projects产生的安装包安装过以后,再次编译生成新的安装包,做安装的时候会提示如下一个对话框:解决该问题的方式如下:一般情况下,主要关注上图中红线部分,UpgradeCode和ProductCode都会默认生成,如果不主动改的话,每次编译这两个值是不会变的,但是在升级版本的时候,一般需要将UpgradeCode保持不变,将Produ...原创 2019-09-09 17:54:39 · 4388 阅读 · 2 评论 -
简单的dll注入到指定进程
// 让指定的进程加载DLL //进程ID 动态库名称BOOL LoadDll(DWORD dwProcessId, LPSTR lpszDllName){ HANDLE hProcess = NULL; HANDLE hThread = NULL; PSTR pszDllFile = NULL; // 打开进程 hProcess = Open...原创 2019-10-11 18:02:33 · 1636 阅读 · 0 评论