我有一个使用MySQL连接器与MySQL数据库通信的程序。应用程序使用Visual Studio 2008运行正常。我正在尝试使用Visual Studio 2010构建应用程序,这就是问题开始的地方。
VS 2010不支持MySQL Connector 1.05,它们没有与VS 2010一起使用的1.1.0二进制版本.MySQL信息说下载Connector C ++ 1.10的源代码并使用VS 2010构建经过大量的工作,我建立了它。这些例子运行。
但是,当我使用新构建的Connector C ++ 1.1.0构建我的应用程序时,收到以下错误消息:
error LNK2019: unresolved external symbol "class sql::mysql::MySQL_Driver * __cdecl sql::mysql::get_driver_instance(void)" (?get_driver_instance@mysql@sql@@YAPAVMySQL_Driver@12@XZ) referenced in function "private: void __thiscall Database_NS::Manager::initialize_db_driver(void)const " (?initialize_db_driver@Manager@Database_NS@@ABEXXZ)
这是由以下源代码行引起的:
sql::Driver * p_driver = sql::mysql::get_driver_instance();
MySQL Connector C ++ 1.1.0示例使用上面的行,它们没有错误。 我已经尝试连接mysqlconn-static.lib,mysqlconn.lib,mysqlclient.lib,libmysql.lib,但错误信息仍然存在。
一个有趣的观点是,根据VS 2010,上述源代码行使用此声明:
CPPCONN_PUBLIC_FUNC MySQL_Driver * get_driver_instance();
请注意不同的返回值。
当我使用Visual Studio 2010和连接器项目示例时,VS 2010无法找到get_driver_instance()
使用的connect.cpp
的声明或函数声明。我的程序中的语句是connect.cpp
使用的确切语句,因为我将其复制而没有任何更改。
其他人通过使用其他驱动程序解决了此问题。但是,除非必须,否则我不想更改与VS2008一起使用的代码。
对此问题的另一个回复是定义“mysqlcppconn_EXPORTS”,但这也不起作用,也在回复的评论中报道。
以下是我的问题:
1.有没有人使用MySQL Connector 1.1.0与Visual Studio 2010一起工作?
如果是,请回答一步一步的示例,并指出是否为dll或静态库
2. VS编译器如何选择返回get_driver_instance()
的{{1}}函数而不是返回MySQL_Driver *
的函数?
我甚至没有得到关于模糊函数的任何警告或错误(因为重载必须不仅仅是返回类型)。
我在Windows-7x64-bit,MySQL Connector C ++ 1.1.0上使用Visual Studio 2010。
另见:
get_driver_instance() crashes with Qt
undefined reference to 'get_driver_instance'
MySQL C++ Connector: undefined reference to `get_driver_instance'
mysql-connector-c++ - ‘get_driver_instance’ is not a member of ‘sql::mysql’
How to fix unresolved external symbol due to MySql Connector C++?
答案 0 :(得分:1)
某些功能名称已更改。我最好的解决方案是使用预处理器条件来区分它们。
答案 1 :(得分:0)
我也有同样的问题,我一直在接受:
*sampletest.obj : error LNK2001: unresolved external symbol __imp__get_driver_instance*
虽然我尝试了32位连接器并且问题已经解决(你可能想尝试一下,如果你很幸运它可能适合你),但我使用的是64位mysql,windows 7,所以有一个一点兼容性问题..我仍在寻找上述问题的解决方案。
逐字跟随教程,链接所有库 我认为C ++ 1.10连接器可能存在一些问题。