WinL 32位上的LoadLibrary失败,在Win XP 32位上成功

时间:2011-05-18 18:01:00

标签: c++ dll loadlibrary

我正在尝试将第三方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)以管理员身份运行并未改变任何内容

2 个答案:

答案 0 :(得分:5)

尝试使用Microsoft Application Compatibility Toolkit(它是一个免费的工具集)来找出它在Windows 7上失败的原因。希望这会有所帮助,它看起来像兼容性问题。

答案 1 :(得分:1)

您是否尝试禁用Data Execution Prevention(DEP)?

这通常在Vista及更高版本上默认启用,但在XP上禁用。如果您的DLL有一个导致它执行数据的错误,这可能会在LoadLibrary调用期间显示。