首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C++ LoadLibrary 載入 pstorec.dll 返回值調試:unused 欄位非錯誤指標

     編輯:程式設計綜合問答

調試時發現 HMODULE hpsDLL = LoadLibrary("pstorec.dll"); 返回值監視視窗顯示 unused = CXX0030: 錯誤: 無法計算表達式的值,**這不代表載入失敗**。

現象解析

  • hpsDLL 本身是非零值(如 0x7F...`),表示載入成功,句柄有效。
  • unused 是調試器顯示的內部字段(內核對象引用計數等),**無業務參考意義**,調試器無法解析其值屬正常現象。

正確判斷載入結果

HMODULE hpsDLL = LoadLibrary("pstorec.dll");
if (hpsDLL == NULL) {
    DWORD err = GetLastError(); // 獲取真實錯誤碼
    // 常見錯誤:126 (模塊未找到)、193 (非有效 Win32 應用/位數不匹配)
    printf("LoadLibrary failed: %lu\n", err);
    return;
}
// 成功:獲取導出函數地址
auto pFunc = (MyFuncType)GetProcAddress(hpsDLL, "MyFunction");
if (pFunc) pFunc();

常見載入失敗原因及對策

錯誤碼含義排查方向
126 (ERROR_MOD_NOT_FOUND)DLL 或其依賴項未找到1. DLL 路徑不在搜索順序中 2. 依賴 DLL 缺失 (用 Dependency Walker 分析) 3. 32/64 位不匹配
193 (ERROR_BAD_EXE_FORMAT)非有效 Win32 應用進程與 DLL 位數不一致 (x86 進程載入 x64 DLL 或反之)
1114 (ERROR_DLL_INIT_FAILED)DLL 初始化失敗DllMain 返回 FALSE,檢查依賴初始化順序、靜態對象構造異常

調試技巧

  1. 使用 Dependency Walker (depends.exe) 或 dumpbin /dependents pstorec.dll 確認依賴鏈完整。
  2. 將 DLL 放置於:應用目錄、系統目錄、PATH 環境變量目錄、或調用 SetDllDirectory/AddDllDirectory 添加搜索路徑。
  3. 釋放時調用 FreeLibrary(hpsDLL),避免句柄洩漏。

**核心原則**:只關注 hpsDLL == NULL 與 GetLastError(),忽略調試器顯示的內部字段異常。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved