Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Mingw _Unwind _resume的多个定义_C++_Mingw_Codeblocks - Fatal编程技术网

C++ Mingw _Unwind _resume的多个定义

C++ Mingw _Unwind _resume的多个定义,c++,mingw,codeblocks,C++,Mingw,Codeblocks,我知道已经有人问过类似的问题,但我已经几个小时没能解决这个问题了 基本上我有一个包含代码的DLL和一个调用它的应用程序。一切正常,但如果我将这两个文件带到我的开发环境之外,它会说程序无法启动,因为计算机中缺少libgcc_s_dw2 1.dll 考虑到它不是一台开发计算机,这是很公平的。因此,对于发行版,我添加了编译器标志“-static libgcc-static libstdc++”。我这样做是为了dll和应用程序 但是当我编译应用程序时,我得到了一个错误: “多个``展开``恢复'定义”

我知道已经有人问过类似的问题,但我已经几个小时没能解决这个问题了

基本上我有一个包含代码的DLL和一个调用它的应用程序。一切正常,但如果我将这两个文件带到我的开发环境之外,它会说程序无法启动,因为计算机中缺少
libgcc_s_dw2 1.dll

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

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

“多个``展开``恢复'定义”

我认为这是因为dll和应用程序都内置了静态库,事实确实如此。但是,如果它们都没有内置静态库,那么程序将无法在最终用户机器上运行

如何在仍然没有依赖于mingw libs的情况下删除此错误?我的IDE是Code::Blocks

大卫

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

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

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


另外,让舒尔在编译器中添加的不是
-static libgcc
,而是linker-flags

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

-Wl,-allow-multiple-definition

您可以为构建添加任何日志代码::Blocks(包括用于编译/链接的命令以及任何警告和错误结果)吗?也许这个答案为您提供了一些错误提示。