首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >_Unwind_resume的多重定义

_Unwind_resume的多重定义
EN

Stack Overflow用户
提问于 2012-06-29 19:31:33
回答 2查看 4.5K关注 0票数 7

我知道有一个类似的问题已经问过了,但我已经好几个小时无法解决这个问题了。

基本上,我有一个包含代码的DLL和一个调用它的应用程序。一切都很好,但是如果我把这两件事排除在我的开发环境之外,它会说程序无法启动,因为计算机中缺少了libgcc_s_dw2 1.dll

考虑到它不是一台开发计算机,这是相当公平的。因此,对于发行版,我添加了编译器标志"-static-libgcc -static-libstdc++“。我这样做是为了dll和应用程序。

但是,当我编译应用程序时,我得到了错误:

“`_Unwind_Resume的多重定义”

我认为这是因为dll和应用程序都内置了静态库,而且确实如此。但是,如果它们都没有内置静态库,程序就不会在最终用户机器上运行。

如何在仍然对混合库没有依赖关系的情况下删除此错误?我的IDE是代码::块。

大卫

编辑:这里是构建链接到dll的应用程序时的构建日志:

代码语言:javascript
复制
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/libgcc_eh.a(unwind-dw2.o):(.text+0x298c): multiple definition of `_Unwind_Resume'

..\EquilibriumEngine\bin\Release\libEquilibriumEngine.dll.a(d000015.o):(.text+0x0): first defined here

collect2: ld returned 1 exit status

Process terminated with status 1 (0 minutes, 0 seconds)

2 errors, 0 warnings
EN

回答 2

Stack Overflow用户

发布于 2017-11-01 12:24:23

一个常见的解决方法是将其添加到链接器标志中:

代码语言:javascript
复制
-Wl,-allow-multiple-definition
票数 4
EN

Stack Overflow用户

发布于 2013-02-05 14:50:27

请只重复使用链接器标志-static。但是(如果可能的话)将libgcc_s_dw2 1.dll包含到您的exe中,并同时分发两者。您可以从MinGW/bin文件夹获取dll。

还让shure您没有添加-static-libgcc到编译器,而是链接器-flags!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11267877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档