gpt4 book ai didi

c++ - 如何检查哪个模块导致 LINK1112 错误?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:50:42 25 4
gpt4 key购买 nike

有没有办法告诉编译时使用的每个 DLL 的完整路径?

我正在尝试制作一个具有易于编码(marshal)功能的 DLL,以便在 C# 应用程序和文件系统 Minifilter 之间进行通信(目前使用 Minispy 示例来检查是否一切运行顺利)。

在 Visual Studio 2013 中使用“Win32”作为我的目标平台时编译和运行成功,但是当使用 printf("%p",...) 打印出指针时;它们的长度只有 8 个字符,而本应是 16 个字符(我的计算机是 64 位),这会影响 future 的指针处理。

对于其他项目,我的活跃解决方案平台一直是 x64。不幸的是,将配置管理器中的平台更改为 DLL 的 x64 会在编译期间生成以下错误:

Error 1 error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'

我在网上查了一下,这似乎是解决方案某些部分的配置问题,但我所有的项目都应该在 x64 中编译。清理和重建以删除旧文件也没有效果。

我已经使用 dumpbin.exe 来检查我认为我的库链接到的 DLL 的机器类型,并且一切似乎都井井有条。我通过检查项目属性中的链接器命令行选项获得了这些,但它们的名称没有显示它们的读取位置(例如:kernel32.lib;user32.lib;gdi32.lib;fltLib.lib ...)。由于我仍然遇到这个问题,我认为它可能链接到相同 DLL 的错误(32 位)版本。

有没有办法告诉编译时使用的每个 DLL 的完整路径?或者更好的是,有没有办法判断具体是哪个 DLL 导致了 LINK1112 错误?

我已经使用了/VERBOSE:LIB 命令并删除了/NOLOGO 选项,但输出没有给人留下深刻印象,在要执行的命令之后立即停止,没有其他信息。

最佳答案

我应该在几个月前解决这个问题时就回答这个问题,但我忘了我把它贴在这里了。但我会努力记忆我做了什么。

最后,如果我没记错的话,我很确定是在成功编译的 (x86) 库上使用 Dependency Walker 拯救了我。我以前使用过它,但我在错误的模式(x64 或 x86)下运行它,使用正确的模式后发现缺少 x64 架构的模块。

关于c++ - 如何检查哪个模块导致 LINK1112 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29495011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com