mysql connector c++ libmysqlcppconn8 使用的坑記錄

在 CMakeList.txt 中引用 libmysqlcppconn8 之後編譯報錯 :

CMakeFiles/omas.dir/src/db/db_operator.cpp.o: In function `mysqlx::abi2::r0::string::traits<char>::from_str(mysqlx::abi2::r0::string&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
/usr/local/include/mysqlx/devapi/common.h:220: undefined reference to `mysqlx::abi2::r0::string::Impl::from_utf8(mysqlx::abi2::r0::string&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
CMakeFiles/omas.dir/src/db/db_operator.cpp.o: In function `mysqlx::abi2::r0::string::traits<char>::to_str[abi:cxx11](mysqlx::abi2::r0::string const&)':
/usr/local/include/mysqlx/devapi/common.h:225: undefined reference to `mysqlx::abi2::r0::string::Impl::to_utf8[abi:cxx11](mysqlx::abi2::r0::string const&)'
CMakeFiles/omas.dir/src/db/db_operator.cpp.o: In function `mysqlx::abi2::r0::SessionSettings::SessionSettings(mysqlx::abi2::r0::string const&)':
/usr/local/include/mysqlx/devapi/settings.h:524: undefined reference to `mysqlx::abi2::r0::common::Settings_impl::set_from_uri(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/omas.dir/build.make:149: omas] Error 1
make[1]: *** [CMakeFiles/Makefile2:73: CMakeFiles/omas.dir/all] Error 2
make: *** [Makefile:84: all] Error 2

解決方法:
在 CMakeLists.txt 中加上

add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)

解決方法來自: https://stackoverflow.com/questions/54022842/connecting-c-to-mysql-using-mysql-c-connector-8/54040470#54040470 , 這上面原因解釋的也很清楚,這裏只做記錄。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章