【发布时间】:2010-12-15 17:40:37
【问题描述】:
我的 C# 应用程序在运行时调用 C++ DLL 中的函数并引发异常。生成的错误代码是 262。不幸的是,Microsoft documentation 缺少此代码。
奇怪的是,从 C++ 测试应用程序运行 DLL 时不会引发此异常,该应用程序是与 DLL 相同的 Visual Studio 解决方案的一部分(单独的项目)。 (C# 应用程序在一个完全独立的解决方案中。)通过调用 CoInitializeEx 返回错误代码,这会初始化 COM,并且是我的应用程序用来查询 WMI 的第一步。
似乎唯一相关的另一件事是,当我使用 Dependency Walker 打开 DLL 时,我收到以下错误和警告:
错误:未找到至少一个必需的隐式或转发依赖项。
警告:至少没有找到一个延迟加载依赖模块。
警告:由于延迟加载依赖模块中缺少导出功能,至少有一个模块存在未解析的导入。
我唯一想到的是缺少的“必需的隐式或转发依赖项”具有使CoInitializeEx 工作所需的东西。根据 Dependency Walker 的说法,找不到这些模块:
- MSVCR90D.DLL
- IESHIMS.DLL
- WER.DLL
感谢任何想法或建议。谢谢。
【问题讨论】:
-
你很幸运。上次我遇到链接器问题(这在 Microsoft 世界中完全是一团糟……)我的代码在没有任何警告的情况下崩溃了,我花了几个小时才找出问题所在。您应该注意将调用 DLL 的程序与 DLL 链接到的同一运行时库链接。