[英]C++ DLL fails to load on some machines
我試圖弄清楚為什么我的DLL無法在某些計算機上加載的原因。
我的應用程序:
使用setup.msi安裝程序部署的AC#程序。 安裝程序內部是放置在應用程序的安裝目錄中的DLL。 例如:
OUTDIR = c:\Program Files\MyApplicationName\%OUTDIR%\MyApplication.exe
dir %OUTDIR%\DLL_FOLDER\\*.dll
myDLL.dll
C#應用程序調用由以下指定的LoadLibrary:
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr LoadLibrary(string libname);
所以基本上
intPtr dll_handle = LoadLibrary("myDll.dll");
被調用,我們使用dll_handle調用所需的函數。
到目前為止,這已經在我部署的5/7機器上起作用了……我在這里犯的明顯錯誤是什么? :-)
感謝您的幫助!
最可能的解釋是:
診斷的第一步是檢查LoadLibrary
的返回值,如果返回值為NULL
則調用GetLastError
檢索錯誤代碼。 在p / invoke中,您可以這樣進行:
IntPtr lib = LoadLibrary(...);
if (lib == IntPtr.Zero)
throw new Win32Exception();
您可以使用Dependency Walker之類的工具來進一步調試問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.