我正在尝试将第三方dll(即我没有源代码)加载到我的应用程序中。在Windows XP 32位系统上,它加载正常,但在Windows 7系统上它无法加载,引用来自GetLastError()的错误#998
我使用dll导出查看器查看dll的导入和导出符号,并观察到导入表中列出的除3个dll之外的所有dll都来自此第三方供应商。没有的是:
KERNEL32.DLL
mingwm10.dll
msvcrt.dll
以下是我用来导入的代码:
SetDllDirectory(L"c:\\dlls");
HMODULE tempDLL = LoadLibrary(L"mydll.dll");
DWORD err = GetLastError();
有关如何调试此问题的任何提示,请?
编辑:感谢大家的答案,这是我迄今为止所发现的:
a)应用工具包包没有证明是有用的(见下文)
b)同事A可以在他的win 7机器上加载dll而同事B不能,所以它是零星的东西
c)以管理员身份运行并未改变任何内容
答案 0 :(得分:5)
尝试使用Microsoft Application Compatibility Toolkit(它是一个免费的工具集)来找出它在Windows 7上失败的原因。希望这会有所帮助,它看起来像兼容性问题。
答案 1 :(得分:1)
您是否尝试禁用Data Execution Prevention(DEP)?
这通常在Vista及更高版本上默认启用,但在XP上禁用。如果您的DLL有一个导致它执行数据的错误,这可能会在LoadLibrary调用期间显示。