我需要在我们的主应用程序中使用第三方dll。当我静态链接到提供的DLL时,它可以正常工作,并且我可以使用DLL的导出函数。但是,我们不希望我们的主应用程序在启动时依赖于此DLL,因此我尝试在需要时动态加载DLL:
DLLHandle := LoadLibrary('3rdparty.dll');
ret := GetLastError();
if DLLHandle = 0 then
begin
err := SysErrorMessage(ret);
Writeln(err);
end //...
但是它不起作用:LoadLibrary函数返回0,LastErrorcode为3221225616。因为我不知道我做错了什么,我尝试了同样的代码(在同一台电脑上)用c编写,它可以工作:但是为什么delphi不能工作呢?我在同一个dll上调用了同样的LoadLibrary函数!
当我使用ProcMon监视时,我看到第三方dll被加载,并且第三方dll的依赖dll也被加载了。因此,Windows肯定能找到DLL。但是在加载过程中某个地方失败了: 当我尝试使用DONT_RESOLVE_DLL_REFERENCES或LOAD_LIBRARY_AS_DATAFILE的LoadLibraryEX加载DLL时,它也可以工作(但我当然无法调用所需的函数...)
我没有更多的想法:希望你们能帮助我进一步...谢谢!