我知道已经有人问过与此类似的问题,但我几个小时都无法解决这个问题。
基本上我有一个包含代码的 DLL 和一个调用它的应用程序。一切正常,但如果我把这两个放在我的开发环境之外,它会说程序无法启动,因为libgcc_s_dw2 1.dll
计算机中丢失了。
考虑到它不是开发计算机,这很公平。所以为了分发,我添加了编译器标志“ -static-libgcc -static-libstdc++
”。我为 dll 和应用程序做了这个。
但是当我编译应用程序时,我得到了错误:
“'_Unwind_Resume'的多重定义”
我认为这是由于 dll 和应用程序都内置了静态库,确实如此。但是如果它们都没有内置静态库,程序将无法在最终用户机器上运行。
如何在不依赖 mingw 库的同时消除此错误?我的 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