0

我正在尝试将第 3 方 dll(即我没有源代码)加载到我的应用程序中。在 windows xp 32 位系统上,它加载正常,但在 windows 7 系统上,它无法加载,引用来自 GetLastError() 的错误 #998

我使用 dll 导出查看器查看了 dll 的导入和导出符号,并观察到导入表中列出的除了 3 个 dll 之外的所有 dll 都来自这个第 3 方供应商。那些没有的是:
kernel32.dll
mingwm10.dll
msvcrt.dll

这是我用来进行导入的代码:

SetDllDirectory(L"c:\\dlls");
HMODULE tempDLL = LoadLibrary(L"mydll.dll");
DWORD err = GetLastError();

请提供有关如何进行调试的任何提示?

编辑:感谢大家的回答,这就是我到目前为止所发现的:
a)应用程序工具包包并没有证明是有用的(见下文)
b)同事A可以让dll加载他的胜利7机器和同事B不能,所以它是零星
的c)以管理员身份运行并没有改变任何东西

4

2 回答 2

5

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

于 2011-05-18T19:59:15.080 回答
1

您是否尝试过禁用数据执行保护(DEP)?

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

于 2011-05-18T20:14:23.457 回答