- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 C++ 单元测试项目,我正在使用 LoadLibraryEx
函数加载我为我的应用程序创建的 dll,但是 LoadLibraryEx
失败并返回 NULL 之后我调用了 GetLastError
函数,错误为 182。我还注意到在执行 LoadLibraryEx
行后的输出窗口中出现错误 Exception thrown at 0x771718D6 vstest.executionengine.x86.exe 中的 (ntdll.dll):0xC0000138:未找到序号。
请注意,当我运行应用程序时,库加载成功,加载仅在从单元测试加载时失败。
最佳答案
你的 dll 是 import TaskDialogIndirect
来自 Comctl32.dll 的函数。但此函数仅由 Comctl32.dll 的版本 6 和更高版本导出。但要使用此版本,必须是存在的事件激活上下文:
<dependency>
<dependentAssembly>
<assemblyIdentity type='win32'
name='Microsoft.Windows.Common-Controls'
version='6.0.0.0' processorArchitecture='*'
publicKeyToken='6595b64144ccf1df' />
</dependentAssembly>
</dependency>
否则会加载5.82 version ComCtl32.dll 不导出 TaskDialogIndirect
和 dll 加载失败。
哪个激活上下文将在 dll 加载时激活?
如果 dll 有自己的 list (RT_MANIFEST
,ISOLATIONAWARE_MANIFEST_RESOURCE_ID
)- 将根据 dll list 创建激活上下文,并将在 dll 加载期间使用它。否则它是未定义的。这可以是(最快速的)基于来自 exe 文件或其他文件的 list 创建的上下文。
根据您的错误-我可以说-您的 dll 没有(RT_MANIFEST
,ISOLATIONAWARE_MANIFEST_RESOURCE_ID
) list 资源。这是错误。加载您的 dll 的应用程序可能有自己的 list ,其中声明了通用控件的版本 6,因此 dll 加载正常。但是单元测试 exe 根本没有 list ,或者 list 中没有版本 6。结果加载了旧版本的 comctl32.dll 并且此处未导出 TaskDialogIndirect
.
无论如何,dll 不能依赖于外部上下文 - 它加载的地方。为此,它必须有自己的 list 。
因此为 dll 创建 list ,其中有 <dependency>
- <dependentAssembly>
对于 <assemblyIdentity type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' />
并将此 list 作为资源包括在内:
ISOLATIONAWARE_MANIFEST_RESOURCE_ID RT_MANIFEST "manifest file name"
有了这个,当你的 dll 将被加载时 - 总是使用版本 6+ 的 comctl32.dll
如何研究这样的错误?
最有效的方式集DWORD LdrpDebugFlags
从 ntdll.dll (在 xp 中 - BOOLEAN ShowSnaps
到 true
)到 0xFFFFFFBF
就在调用 LoadLibrary
之前在调试器中。作为结果,链接器在 dll 加载期间打印详细的调试消息 - 您可以准确查看进程失败的位置。此外,在某些困难的情况下,也最好记录成功的 dll 加载并比较此日志。
the ordinal 345 could not be located in the dynamic link library comctl32.dll
当我们有序号而不是名称时 - 运行
link.exe /dump /exports "<path>comctl32.lib" > comctl32.log
然后查看日志。在日志中我们可以发现:
345 TaskDialogIndirect
现在查看 TaskDialogIndirect
的 msdn 要求部分- 当我们查看 Comctl32.dll(版本 6)时 - 一切都变得清晰
关于C++ 单元测试项目 LoadLibrary 失败并出现 Ordinal Not Found 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48491014/
我们在日常使用电脑的时候,有些情况下可能会遇到出现提示found.000文件丢失损坏的情况。那么如果想要对found.000文件进行恢复,小编觉得可以在我们的文件夹选项中进行相关设置,找到被隐藏的文
下面的代码给出了“未找到”的输出。但我希望它能给出“发现”。我的错误在哪里? #include void compare(char *x, char *face); int i; int main(
为什么我的 git 不推送?我创建了存储库,但不断收到此消息: C:\Users\petey_000\rails_projects\first_app>git push -u github maste
我正在使用 Spring Boot 构建 Web API。端点之一采用 JSON 发布请求。我想在某些字段上设置验证消息。所以我在/src/main/resources 下添加了一个 Validati
我按照此页面上的说明进行操作: https://developers.facebook.com/docs/plugins/share-button/#settings 我得到一个工作共享对话框,但是当
如何在事件监听器中触发重定向到特定路由器? 有很多示例,但我找不到“GetResponseForExceptionEvent”的示例。例如,当我将 @roter 作为参数传递时,$this->rout
我使用下面的代码来发布 ssl 网络服务。当我浏览 https://localhost/ 它给我这个错误: 404 Not Found No context found for request 代码:
我正在尝试构建一个 docker 镜像但是正在获取 未找到 secret pip:未找到 对此有什么想法吗? docker 文件: FROM SHELL ["/bin/bash", "-c"] RU
我正在使用 indy TIDHTTP 编写一种方法来了解我在互联网上的服务器是否已关闭或同一服务器上的页面地址不可用。 我复制了 stackoverflow 上另一个线程中给出的建议: try I
我尝试将结果附加到列表中(如果找到),并将字符串“N/A”附加到列表中(如果未找到匹配项)。 show_version_lists 是来自各种网络设备的日志列表。 import re for resu
我在这里尝试加载关于我们的页面。但是找不到请求的页面。请提供此问题的解决方案。 查看: ">HOME /CI_timeline/
我不会问问题,而是回答一个问题,因为到目前为止我在网上找不到这个建议,并且自己刚刚弄清楚了这一点。分享是件好事,对吧? 所以在命令行上,我这样做了: sudo npm install -g cordo
我有一个脚本来处理一些参数并使用这些参数部署 Arm 模板,然后使用我的存储帐户中的 bacpac 文件创建数据库。当我的脚本尝试调用 cmdlet“New-AzSqlDatabaseImport”时
我使用“chrome://inspect”几天了。一切都很好。今天,由于某种原因,当我单击“检查”时,结果是“404 Not Found 找不到资源。” 这可能是什么原因? 我只能找到这个主题:htt
我的 Ubuntu 14.04 有一个奇怪的问题。我正在使用 Django-Rest-Framework 开发一个使用 Ionic 和 API 的移动应用程序。开发完成后,我下载了 jdk 和 And
我正在使用calabash-android-java测试使用 Xamarin 构建的混合应用程序。正如您在下面看到的,我能够查询 DOM 元素,甚至将一些信息记录到控制台,但是当我执行 touch 命
搜索功能非常有用,但我不确定如何为其添加某些“附加功能”。当有结果显示时,我还想说: "Your search returned x results." 后面是结果。 当没有结果显示时,我想说: "Y
我试图在我的应用程序中实现导航功能。当我尝试构建应用程序时,输出显示: Android resource linking failed /home/mateusz/AndroidStudioProje
我需要查询公共(public)项目提供的数据集。我创建了自己的项目并将他们的数据集添加到我的项目中。有一个表名为:domain_public .当我对该表进行查询时,我收到此错误: Query Fa
我对 Node.js 相当陌生,我使用的是下面页面中的教程。 http://www.9lessons.info/2017/02/create-restful-api-nodejs-mysql.html
我是一名优秀的程序员,十分优秀!