【问题标题】:Multiple Definitions of _Unwind_Resume_Unwind_Resume 的多种定义
【发布时间】:2012-01-06 22:18:14
【问题描述】:

一段时间以来,我一直在使用我编写的一小部分文件,以便更轻松地与 WinAPI 交互。虽然,当我想重用它们、等待它们重新编译等时,不断移动文件变得很痛苦。我最终决定把它们放在一个 DLL 中,并完成它,但我得到了一个每次尝试使用该库时都会出现奇怪的链接错误。

该错误实际上与标题一样具体,几乎没有提供有关定义实际来源的信息(考虑到,据我所知,这种信息无法真正从 DLL 中收集)。有人可以准确解释导致此错误的原因,并提供一些可能的解决方法吗?

我正在使用 MinGW(SFML 站点提供的相同版本,4.4)以及 Code::Blocks,如果该信息有帮助的话。如果需要更多信息,我会尽力提供。

【问题讨论】:

    标签: c++ linker mingw


    【解决方案1】:

    问题在于名为_Unwind_Resume 的符号(函数或变量)有多个定义。

    DLL 正在导出这样的名称。重建它,使其仅公开所需的符号。显然,它现在是使用导出的所有公共符号构建的。

    【讨论】:

    • 我注意到 MinGW 在默认情况下会这样做,这在过去给我造成了困惑,所以感谢您澄清这一点。您是否碰巧知道强制它不这样做的方法?
    • @B3tturTh3nU:这取决于工具。类似于 MS 选项的工具支持linker .def (definitions) file。 Borland 直接支持这一点。但是对于gcc,它几乎可以肯定是一个命令行选项。
    猜你喜欢
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    • 2016-04-08
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    相关资源
    最近更新 更多