链接CodeBlocks中的Boost库(使用MinGW)
Linking Boost libs in CodeBlocks (using MinGW)
近三天来,我一直在尝试使用mingw使boost库在CodeBlocks中正常工作。在我自己设法解决的许多问题之间,现在我陷入了困境,这让我抓狂。
我已经多次使用发送到bjam
的不同标志构建库,但每次在CodeBlocks中使用这些库时,我都会得到相同的结果。很多带有的线路
undefined reference to `___gxx_personality_sj0'
undefined reference to `__Unwind_SjLj_Register'
undefined reference to `__Unwind_SjLj_Resume'
undefined reference to `__Unwind_SjLj_Unregister'
在人们开始猛烈抨击我之前,我在来这里之前已经找到了问题所在。几乎所有的线程(这里和这里以及其他线程)都说,这个问题源于boost是用编译器构建的,现在我正试图在CodeBlocks中使用另一个不同的编译器。我已经检查了一次又一次,我只有一个MinGW
安装可用。我已经检查了我的Path
变量,里面没有多余的东西,只有我想使用的MinGW的bin文件夹。我没有任何QT安装,所以没有第二个MinGW。此外,我下载了CodeBlocks,而没有捆绑的MinGW。
下面我将列出我采取的步骤:
1) 构建bjam 的bootstrap.bat mingw
2) 此处所述bjam --toolset=gcc "--prefix=<installpath>" install
3) 遵循步骤2)链接中的其余步骤
4) 添加Boost.Filesystem
、Boost.System
、Boost.DateTime
、Boost.Thread
和Boost.Regex
(Boost.Log的依赖项取自此处)
5) 复制/粘贴此示例
CodeBlocks在尝试构建时使用的命令:
mingw32-g++.exe-Wall-fexceptions-g
-ID:\libs\boost\include\boost-1_51-c D:\example\example\main.cpp-o obj\Debug\main.omingw32-g++.exe-LD:\libs\boost\lib-o bin\Debug\example.exeobj\Debug\main.oD: \libs\boost\lib\libboost_filesystem-mgw44-mt-D_1.51.aD: \libs\boost\lib\libboostrongystem-mgw44-mt-D_1.51.aD: \libs\boost\lib\libboost_date_time-mgw44-mt-D_1-51.aD: \libs\boost\lib\libboost_thread-mgw44-mt-1_51.aD: \libs\boost\lib\libboost_regex-mgw44-mt-D_1-51.aD: \libs\boost\lib\libboost_log_setup-mgw44-mt-D_1-51.a
造成这种情况的原因还有什么?
后来添加:
CodeBlocks工具链可执行文件包括:
c++ compiler: mingw32-g++.exe
linker for dynamic libs: mingw32-g++.exe
linker for static libs: ar.exe
所有.EXE都在它们应该在的地方,但添加这些信息可能很重要。
修复了该问题。在Mankarse
问我关于gcc版本的问题后,我检查了一下,它与编译libs(4.4)时使用的版本相同。我决定升级到最新版本(4.7),然后再试一次。更新后,我注意到编译后的libs名称中仍然有mgw44
,这让我觉得可能我确实安装了第二个mingw。
在检查了Path变量中的每个文件夹后,我得出的结论是,我几周前安装的Strawberry Perl也与gcc版本捆绑在一起。在我移除它并从sctratch重建boost之后,错误消失了。
为了将来的参考,如果有人再次遇到这个问题,并且确信他只有一个问题,只需像这样再次检查:
-
从路径变量中删除带有mingw-exes的bin文件夹
-
打开命令提示符并键入
g++
。如果上面写着类似g++: fatal error: no input files
的内容,那么您有多个mingw安装。
- 无法在windows上使用mingw将sqlite3与c连接
- 使用 MinGW 在 Windows 上安装 GMP 时出错
- 使用 MinGW 在 Windows 上构建 GLEW 时遇到问题
- 使用 MINGW gcc 编译时,不会为 std::string 调用重载的新运算符
- 如何使用MinGW编译器和SSL支持静态编译Qt
- 执行用 C++ 编写的.exe(使用 mingw 编译器)时出现问题
- 使用 MinGW 在 Windows 上的命令行编译C++文件
- 无法使用 mingw-w64 g++ 编译:找不到 <wchar.h>
- mingw32-make 使用"MinGW Makefiles"生成器跟踪 CMAKE 无法将可执行文件链接到对象库
- 使用 Mingw 构建环境C++?
- 使用mingw遵循简单的c ++ DLL教程时出错
- 使用Mingw-w64编译Google测试
- 尝试使用 MinGW/CMake 构建 GLFW 示例时未定义的引用
- 使用 MINGW 和 CPLEX 库链接从 Linux 编译 Windows 可执行文件
- 使用 MinGW 构建 ASSIMP 会导致文件太大错误
- 避免使用MINGW编译器和NAR-Maven-Plugin避免使用机器依赖的POM
- Clang 在Clion Windows中,如何使用mingw-w64而不是Windows VC运行
- C++在Linux机器上使用cmake Qt5 Webkit进行交叉编译,使用mingw针对Windows,失败了
- 使用MinGW播放声音
- 如何使用mingw编译C STD ::线程代码