我想弄清楚爲什麼我的DLL無法加載某些機器的原因。C + + DLL無法加載某些機器
我的應用程序:部署與安裝程序的setup.msi
C#程序。安裝程序內部是放置在應用程序的安裝目錄中的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上工作......我在這裏製造的明顯錯誤是什麼? :-)
感謝您的幫助!
通常這是一個DLL依賴問題。檢查依賴關係walker DLL是否擁有它依賴的所有東西。 – Timbo 2014-10-18 14:55:25
Dll的搜索路徑中是否有'DLL_FOLDER'?如果不是的話,爲什麼不能直接將DLL放入'%OUTDIR%'本身? – PeterT 2014-10-18 14:56:20
@彼得特爾:是的彼得我可以把它放在同一個文件夾中。 DLL_FOLDER被用來「保持整潔」。 – 2014-10-18 15:38:09