mysql connector c++ libmysqlcppconn8 使用的坑记录

    技术2022-07-15  50

    在 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 , 这上面原因解释的也很清楚,这里只做记录。

    Processed: 0.011, SQL: 9