首页 > 解决方案 > xdevapi for MySQL 使用 c++ 连接器链接器问题

问题描述

我是新手,正在尝试为 MySQL 学习 xdevapi。我想在我的 Windows 设备上将它与 C++ 代码一起使用。但我很难运行示例代码。我收到很多链接器错误。网上关于这些建筑配置的内容不多。互联网上的类似查询没有回复。

这是我的代码:

#include <iostream>
#include <mysqlx/xdevapi.h>
using namespace mysqlx;

// Scope controls life-time of objects such as session or schema

int main(void) {
  Session mySession("mysqlx://localhost:33060/testdb?user=test&password=test");
  std::list<Schema> schemaList = mySession.getSchemas();

  std::cout << "Available schemas in this session:" << std::endl;

  // Loop over all available schemas and print their name
  for (Schema schema : schemaList) {
    std::cout << schema.getName() << std::endl;
  }
}

生成文件

MYSQL_CONCPP_DIR = C:/Program Files/MySQL/Connector C++ 8.0
CPPFLAGS = -I "$(MYSQL_CONCPP_DIR)/include" -L "$(MYSQL_CONCPP_DIR)/lib64"
LDLIBS = -lvs14/mysqlcppconn8 -lssleay32 -llibeay32 -lpthread
CXXFLAGS = -Wall -g3 -std=c++11
test: test.cpp

编译器输出:

g++ -Wall -g3 -std=c++11 -I "C:/Program Files/MySQL/Connector C++ 8.0/include" -L "C:/Program Files/MySQL/Connector C++ 8.0/lib64"   test.cpp  -lvs14/mysqlcppconn8 -lssleay32 -llibeay32 -lpthread -o test
In file included from C:/Program Files/MySQL/Connector C++ 8.0/include/mysqlx/devapi/common.h:35,
                 from C:/Program Files/MySQL/Connector C++ 8.0/include/mysqlx/xdevapi.h:91,
                 from test.cpp:3:
C:/Program Files/MySQL/Connector C++ 8.0/include/mysqlx/common.h:60: warning: ignoring #pragma comment  [-Wunknown-pragmas]
 #pragma comment(lib,"ws2_32")
 
C:\Users\sirea\AppData\Local\Temp\ccBh6psQ.o: In function `mysqlx::string::string(char const*)':
C:/Program Files/MySQL/Connector C++ 8.0/include/mysqlx/devapi/common.h:110: undefined reference to `mysqlx::string::Impl::from_utf8(mysqlx::string&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
C:\Users\sirea\AppData\Local\Temp\ccBh6psQ.o: In function `mysqlx::string::operator std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >() const':
C:/Program Files/MySQL/Connector C++ 8.0/include/mysqlx/devapi/common.h:125: undefined reference to `mysqlx::string::Impl::to_utf8[abi:cxx11](mysqlx::string const&)'
C:\Users\sirea\AppData\Local\Temp\ccBh6psQ.o: In function `mysqlx::Value::print(std::ostream&) const':
C:/Program Files/MySQL/Connector C++ 8.0/include/mysqlx/devapi/document.h:506: undefined reference to `mysqlx::common::Value::print(std::ostream&) const'
C:\Users\sirea\AppData\Local\Temp\ccBh6psQ.o: In function `mysqlx::SessionSettings::SessionSettings(mysqlx::string const&)':
C:/Program Files/MySQL/Connector C++ 8.0/include/mysqlx/devapi/settings.h:293: undefined reference to `mysqlx::common::Settings_impl::set_from_uri(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
C:\Users\sirea\AppData\Local\Temp\ccBh6psQ.o: In function `mysqlx::internal::Session_detail::Name_src::~Name_src()':
C:/Program Files/MySQL/Connector C++ 8.0/include/mysqlx/devapi/detail/session.h:271: undefined reference to `mysqlx::internal::Query_src::~Query_src()'
C:\Users\sirea\AppData\Local\Temp\ccBh6psQ.o: In function `mysqlx::internal::Session_detail::Name_src::~Name_src()':
C:/Program Files/MySQL/Connector C++ 8.0/include/mysqlx/devapi/detail/session.h:271: undefined reference to `mysqlx::internal::Query_src::~Query_src()'
C:\Users\sirea\AppData\Local\Temp\ccBh6psQ.o: In function `mysqlx::internal::Session_detail::Schema_src::Schema_src(mysqlx::Session&, mysqlx::string const&)':
C:/Program Files/MySQL/Connector C++ 8.0/include/mysqlx/devapi/detail/session.h:284: undefined reference to `mysqlx::internal::Session_detail::Name_src::Name_src(mysqlx::Session const&, mysqlx::string const&)'
C:\Users\sirea\AppData\Local\Temp\ccBh6psQ.o: In function `mysqlx::internal::Session_detail::~Session_detail()':
C:/Program Files/MySQL/Connector C++ 8.0/include/mysqlx/devapi/detail/session.h:321: undefined reference to `mysqlx::internal::Session_detail::close()'
C:\Users\sirea\AppData\Local\Temp\ccBh6psQ.o: In function `mysqlx::internal::Session_detail::~Session_detail()':
C:/Program Files/MySQL/Connector C++ 8.0/include/mysqlx/devapi/detail/session.h:321: undefined reference to `mysqlx::internal::Session_detail::close()'
C:\Users\sirea\AppData\Local\Temp\ccBh6psQ.o: In function `mysqlx::Session::Session(mysqlx::SessionSettings)':
C:/Program Files/MySQL/Connector C++ 8.0/include/mysqlx/xdevapi.h:1101: undefined reference to `mysqlx::internal::Session_detail::Session_detail(mysqlx::common::Settings_impl&)'
C:\Users\sirea\AppData\Local\Temp\ccBh6psQ.o: In function `mysqlx::internal::Iterator<mysqlx::internal::Session_detail::Schema_src, mysqlx::Schema, long long, mysqlx::Schema*, mysqlx::Schema&>::Iterator(mysqlx::internal::Session_detail::Schema_src&)':
C:/Program Files/MySQL/Connector C++ 8.0/include/mysqlx/devapi/common.h:335: undefined reference to `mysqlx::internal::Query_src::iterator_next()'
C:\Users\sirea\AppData\Local\Temp\ccBh6psQ.o: In function `mysqlx::internal::Iterator<mysqlx::internal::Session_detail::Schema_src, mysqlx::Schema, long long, mysqlx::Schema*, mysqlx::Schema&>::operator++()':
C:/Program Files/MySQL/Connector C++ 8.0/include/mysqlx/devapi/common.h:355: undefined reference to `mysqlx::internal::Query_src::iterator_next()'
C:\Users\sirea\AppData\Local\Temp\ccBh6psQ.o: In function `mysqlx::internal::Iterator<mysqlx::internal::Session_detail::Schema_src, mysqlx::Schema, long long, mysqlx::Schema*, mysqlx::Schema&>::operator*() const':
C:/Program Files/MySQL/Connector C++ 8.0/include/mysqlx/devapi/common.h:367: undefined reference to `mysqlx::internal::Session_detail::Schema_src::iterator_get()'
C:\Users\sirea\AppData\Local\Temp\ccBh6psQ.o:test.cpp:(.rdata$_ZTCN6mysqlx5ValueE0_NS_6common5ValueE[_ZTCN6mysqlx5ValueE0_NS_6common5ValueE]+0x20): undefined reference to `mysqlx::common::Value::print(std::ostream&) const'
C:\Users\sirea\AppData\Local\Temp\ccBh6psQ.o:test.cpp:(.rdata$.refptr._ZTVN6mysqlx8internal9Query_srcE[.refptr._ZTVN6mysqlx8internal9Query_srcE]+0x0): undefined reference to `vtable for mysqlx::internal::Query_src'
C:\Users\sirea\AppData\Local\Temp\ccBh6psQ.o:test.cpp:(.rdata$.refptr._ZTVN6mysqlx5DbDocE[.refptr._ZTVN6mysqlx5DbDocE]+0x0): undefined reference to `vtable for mysqlx::DbDoc'
C:\Users\sirea\AppData\Local\Temp\ccBh6psQ.o:test.cpp:(.rdata$.refptr._ZTVN6mysqlx6common5ValueE[.refptr._ZTVN6mysqlx6common5ValueE]+0x0): undefined reference to `vtable for mysqlx::common::Value'
collect2.exe: error: ld returned 1 exit status
make: *** [<builtin>: test] Error 1

目录树连接器文件夹

Folder PATH listing for volume OS
Volume serial number is 1E28-BDAE
C:.
|   BUILDINFO.txt
|   LICENSE.txt
|   README.txt
|   res
|   
+---include
|   +---jdbc
|   |   |   mysql_connection.h
|   |   |   mysql_driver.h
|   |   |   mysql_error.h
|   |   |   
|   |   \---cppconn
|   |           build_config.h
|   |           config.h
|   |           connection.h
|   |           datatype.h
|   |           driver.h
|   |           exception.h
|   |           metadata.h
|   |           parameter_metadata.h
|   |           prepared_statement.h
|   |           resultset.h
|   |           resultset_metadata.h
|   |           sqlstring.h
|   |           statement.h
|   |           variant.h
|   |           version_info.h
|   |           warning.h
|   |           
|   \---mysqlx
|       |   common.h
|       |   common_constants.h
|       |   xapi.h
|       |   xdevapi.h
|       |   
|       +---common
|       |       api.h
|       |       error.h
|       |       op_if.h
|       |       settings.h
|       |       util.h
|       |       value.h
|       |       
|       \---devapi
|           |   collations.h
|           |   collection_crud.h
|           |   common.h
|           |   crud.h
|           |   document.h
|           |   error.h
|           |   executable.h
|           |   mysql_charsets.h
|           |   mysql_collations.h
|           |   result.h
|           |   row.h
|           |   settings.h
|           |   table_crud.h
|           |   
|           \---detail
|                   crud.h
|                   error.h
|                   result.h
|                   row.h
|                   session.h
|                   settings.h
|                   
\---lib64
    |   libeay32.dll
    |   mysqlcppconn-7-vs14.dll
    |   mysqlcppconn8-1-vs14.dll
    |   ssleay32.dll
    |   
    \---vs14
            libeay32.lib
            mysqlcppconn-static.lib
            mysqlcppconn.lib
            mysqlcppconn8-static.lib
            mysqlcppconn8.lib
            ssleay32.lib

我使用的是 8.12 版本

标签: c++mysqlc++11mysql-x-devapi

解决方案


推荐阅读