Delphi Loadlibrary返回0(LastErrorcde = 3221225616)这是什么意
我需要在我们的主应用程序中使用第三方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中编码的相同(在同一台PC上)并且它可以工作:但是什么不是它与delphi一起工作? : 当我使用ProcMon监视时,我看到第三方dll被加载,并且第三方dll的dependand dll也被加载. :所以Windows肯定会找到DLL. 我没有想法:希望你们能帮助我… thx in adv. 解决方法
这有用吗?
var SavedCW: word; ... SavedCW := Get8087CW; Set8087CW(SavedCW or $7); DLLHandle := LoadLibrary('3rdparty.dll'); Set8087CW(SavedCW); if DLLHandle = 0 then begin ret := GetLastError(); err := SysErrorMessage(ret); Writeln(err); end //... 一些讨论: 在询问Google时,错误代码3221225616似乎是无效浮点运算的结果.现在,这似乎非常技术性;实际上,加载库与浮点计算有什么关系呢?浮点控制字(CW)是一个位域,其中位指定处理器应如何处理浮点错误;实际上,通过将这些位中的一个更改为1(顺便说一下是默认状态)可以处理意外的浮点错误.有关另一个例子,请参见this question of mine,其中我得到一个完全意外的除零误差,通过将控制字的“div by zero”位设置为1来处理. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |