【问题标题】:Using C++ MySQL Driver on Windows在 Windows 上使用 C++ MySQL 驱动程序
【发布时间】:2013-07-31 01:21:38
【问题描述】:

实际错误是链接器错误。对 get_driver_instance 的未定义引用。

任何想法是什么问题?

这是我安装的。

  • 下载 MinGW 并将其安装到 C:\MinGW。 http://www.mingw.org/
  • 下载 boost 并将 boost 文件夹移动到 C:\MinGW\include
  • 下载连接器/C++ 1.1.3 http://dev.mysql.com/downloads/connector/cpp/
  • 将 mysql_connector/include/*.h(递归)移动到 C:\MinGW\include\
  • 将 mysql_connector/lib/mysqlcppconn-static.lib 移动到 C:\MinGW\lib\libmysqlcppconn-static.a
  • 将 mysql_connector/lib/mysqlconncpp.dll 移至 C:\MinGW\lib\mysqlconncpp.dll
  • 更改 cppconn/config.h 以删除重复项
  • 复制 C++ 示例并将其命名为 test.cpp http://dev.mysql.com/doc/refman/5.1/en/connector-cpp-examples-complete-example-1.html
  • 将“使用命名空间 sql::mysql”添加到文件中(按照建议)
  • 运行“g++ test.cpp -L C:\MinGW\lib -l mysqlcppconn-static”

【问题讨论】:

  • 你为什么用c标记这个?
  • 它是 c,因为 c++ 是基于 c 构建的,并且可能是我缺少的 c 指令。这不是重复的,因为该帖子(已查看)没有解决我的问题。许多不同的谷歌搜索也没有。不过谢谢。
  • 为什么不发布一个可运行的示例来演示问题
  • 我在原始帖子中发布了我的确切过程......也许你可以告诉我我错过了什么或做错了什么。

标签: c++ mysql windows


【解决方案1】:

它可能在命名空间中。

扔进去看看会发生什么:

using namespace sql::mysql; 

编辑:另外,您是否浏览过大约 869 次其他人在发布之前就堆栈溢出问题提出过同样的问题?

https://www.google.com/search?q=mysql+get_driver_instance+site:stackoverflow.com

如果不是这样,那可能是 c++ 名称修改的问题。

https://en.wikipedia.org/wiki/Name_mangling#Name_mangling_in_C.2B.2B

由于此类功能的名称修改系统在编译器之间没有标准化,因此很少有链接器可以链接由不同编译器生成的目标代码。

我认为最终的答案就在这里:

http://www.mingw.org/wiki/MixingCompilers

另一个堆栈溢出答案是这样说的:

What problems can appear when using G++ compiled DLL (plugin) in VC++ compiled application?

您需要使用 g++ 编译器从源代码构建连接器:

http://dev.mysql.com/doc/refman/5.1/en/connector-cpp-installation-source.html

【讨论】:

  • 我已经尝试过了,前 2 个结果在我已经查看过的提供的 Google 搜索中。
  • 所以,在这一点上,我认为这是一个 c++ 编译问题。如果您查看 mysql_driver.cpp,它不在 extern C 部分中,所以我的理解是,如果您没有使用与他们相同的 C++ 编译器,它不会找到相同的库,因为它会破坏名称。
  • 我相信这一点。我环顾了一下,但找不到要编译的 *.cpp 文件。我只能找到*.h。知道在哪里可以找到 *.cpp 文件(我不喜欢使用 CMAKE,因为到目前为止我一直在使用 MinGW / G++)。
  • @LoganMurphy 在mysql连接器下载页面下拉,选择一个叫“source”什么的。我抓住了它,我有一堆 cpp 文件。你要找的文件是:mysql-connector-c++-1.1.3.tar.gz,里面有110个.cpp文件。
猜你喜欢
  • 1970-01-01
  • 2016-12-04
  • 2015-02-22
  • 2013-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多