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 選項后,就可以正常啟動軟件。

這段代碼有毒?

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM