我想弄清楚为什么我的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