gpt4 book ai didi

dll - 链接 64 位 dll mingw

转载 作者:行者123 更新时间:2023-12-04 22:00:50 26 4
gpt4 key购买 nike

我正在将一个 dll 与其他 dll 的某些依赖关系链接起来。我在链接项目的 64 位版本时遇到问题。就我使用 mingw32 而言,32 位版本一切正常。但是当我切换到依赖 dll 和 mingw-w64 的 64 位版本时,它会显示以下内容:

c:/.../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible .\lib\native/libblabla.dll when searching for -llibblabla

'libblabla' 是我依赖的库。我绝对确定它是 64 位版本并且应该兼容。是mingw的bug吗?

此外,我尝试使用 lib 文件进行链接,但提供的 lib 也被认为是不兼容的,并且 dlltool 生成的文件没有生成导入表!

我完全被这个困住了。谢谢。

最佳答案

首先,为了消除一些可能的误解:

  1. GCC/ld 可以链接到(正确导出)32 位 DLL 和 .lib/.a 导入和静态库。
  2. GCC/ld 应该能够链接到正确导出的 64 位 DLL 或 .a 导入或静态库,但决不能链接到 64 位 .lib 文件.
  3. 您没有使用 -m32 构建/链接,是吗?

“正确导出”是指 dumpbin/exportsnm -t 在 DLL 上运行时显示导出的符号。

你应该尝试什么:

  1. 通过调用 gcc 构建,而不是直接调用 binutils。选项 -shared -o name.dll -Wl,--import-lib, libname.dll.a 应该可以帮助您入门。

  2. 使用 MinGW-w64 的 gendef(它在他们的 SVN/sources 的 mingw-w64-tools 目录中)生成一个 .def 文件,你可以创建导入库。

如果这些在导入库中没有生成任何符号,则您没有导出任何符号。虽然这会令人惊讶,因为错误消息说 dll 是 32 位的。 MSYS/Cygwin 的 file 命令对 dll 返回什么?

关于dll - 链接 64 位 dll mingw,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7737612/

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