2012-10-04 73 views
5

該項目由調用LoadLibrary()加載dll文件的單個.cpp文件組成。當在Visual Studio中構建時,LoadLibrary無法加載錯誤代碼爲126的dll

會發生什麼情況是,如果我運行通過微軟的Visual Studio 2012以下命令提示符

cl /nologo Test.cpp 

,一切工作正常。另一方面,如果我啓動一個簡單的Visual C++項目,添加文件並在那裏編譯,LoadLibrary()調用失敗,代碼爲:找不到指定的模塊。

從命令行構建的.exe文件的大小是Visual Studio中構建的大小的兩倍多。所以我想有一些靜態鏈接正在進行。

.dll文件很好,它與.exe文件位於同一目錄中。

回答

7

我想通了。

默認情況下,cl命令使用多字節字符集。雖然在Visual Studio中設置的新項目已針對unicode進行配置。

+0

感謝分享 – Albertino80

+1

非常感謝你的小費。我必須刪除定義UNICODE和_UNICODE的標準項目設置才能使其在預先發布的VS 2013 Express桌面應用程序中運行。所以,如果你有任何/ D「UNICODE」和/ D「_UNICODE」編譯器標誌,並且得到了臭名昭着的錯誤126,那就去掉它們! – Leo

2

如果Loadlibrary函數失敗,並且錯誤126 明確表明它無法找到該庫。 所以你可以通過在Loadlibrary的參數中應用完整路徑來檢查這個函數。 如果它工作,然後在系統環境變量的PATH變量中設置該路徑。 ,因爲Loadlibrary api首先找到完整路徑,如果它無法在該路徑中找到該庫,那麼它會在系統標準PATH中進行搜索。

0

你的操作系統是64位嗎?我在win7(64位)上遇到過這種情況,但是在VS,photoshop(64位),matlab-2011a(64位)中沒有遇到這種情況。提示是相同的:加載庫失敗,錯誤126 ...

據我所知,「他們錯過了一個對其功能至關重要的註冊表項。具體而言,每當應用程序請求OpenGL訪問時,AMD的atig6pxx.dll就會啓動。然後它會在HKLM \ SYSTEM \ CurrentControlSet \ Control \ Class {4d36e968-e325-11ce-bfc1-08002be10318} \ 0000中查看並加載OpenGL組件OpenGLVendorName(64位)或OpenGLVendorNameWow(32位)「。

你可以參照這個博客(enter link description here),以及它給solution.I嘗試,它worked.or你可以參考這個論壇(enter link description here )。

我希望它能夠解決您的問題,請你好運:)

相關問題