gcc -O2 优化,到底做了什么? 程序都不能正常运行了。
作者:互联网
一个项目开发到维护有五年时间了。
今天在项目中加入了一段代码后,软件启动后,窗口显示不出来了。
加入的代码:
HMODULE hDll_kernel32 = LoadLibrary("kernel32.dll"); // 加载 kernel32.dll if(hDll_kernel32) { FARPROC proc = GetProcAddress(hDll_kernel32, "SetDllDirectoryA"); //导出 DLL 库函数地址 if(proc) { //printf("在 kernel32.dll 找到 SetDllDirectoryA() \n"); typedef BOOL (*func_SetDllDirectoryA)(LPCSTR); func_SetDllDirectoryA _SetDllDirectoryA = (func_SetDllDirectoryA)proc; //函数指针 int status = _SetDllDirectoryA(app_folder_path); //将目录添加到用于查找应用程序DLL的搜索路径 printf("_SetDllDirectoryA()->status:%d\n", status); } FreeLibrary(hDll_kernel32); //释放 hDll_kernel32 = NULL; }
取消 -O2 选项后,就可以正常启动软件。
这段代码有毒?
标签:hDll,gcc,kernel32,proc,SetDllDirectoryA,dll,func,优化,O2 来源: https://www.cnblogs.com/personnel/p/12424952.html