【问题标题】:Import library creation not working导入库创建不起作用
【发布时间】:2013-04-28 17:41:36
【问题描述】:

我正在尝试使用 binutils ld 2.21 版在 Windows 上链接一个小 DLL(只有一个输入文件)。我的目标文件中标记为dllexport 的每个符号都出现以下错误:

Cannot export <symbol name>: symbol not found

对此我能做些什么?我已经通过应用 nm 验证了问题符号存在并且是非静态的,但我仍然收到错误。我也尝试过删除和重建目标文件;它没有帮助。我怀疑问题与我的链接线有关。为了记录,这里是:

clang++ -fPIC -Wl,--dll,--compat-implib,--nxcompat,--dynamicbase -shared \
-o pthread.dll pthread.o -lkernel32 -lmsvcrt

我做错了什么?

【问题讨论】:

    标签: winapi ld


    【解决方案1】:

    这种行为显然是由于 Clang 中的一个错误造成的。我开发的解决方法是:

    1. 从源代码中删除所有__declspec(dllexport)(但不是__declspec(dllimport))语句。
    2. 重新编译依赖于pthread.dll 的库。即使不再有导入库,GNU ld 也足够聪明,可以即时生成一个,这要归功于我源代码中的 __declspec(dllimport) 语句。

    【讨论】:

      猜你喜欢
      • 2014-10-12
      • 1970-01-01
      • 1970-01-01
      • 2016-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多