Visual Studio Name Mangling "YAPEAV" and Mysql connector
Visual Studio Name Mangling "YAPEAV" and Mysql connector
将我的代码与 MySQL 连接器C++ 1.1.0 链接时,我遇到了未解决的外部符号错误。
下面是错误消息:
6>database.lib(db_manager.obj) : 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 "class sql::mysql::MySQL_Driver * __cdecl sql::mysql::get_mysql_driver_instance(void)" (?get_mysql_driver_instance@mysql@sql@@YAPAVMySQL_Driver@12@XZ)
我使用 dumpbin
在 mysqlconn-static.lib 中获取符号列表,并找到了一个类似的符号:
COMDAT; sym= "class sql::mysql::MySQL_Driver * __cdecl sql::mysql::get_driver_instance(void)" (?get_driver_instance@mysql@sql@@YAPEAVMySQL_Driver@12@XZ)
当这两行对齐时,差异如下所示:
(?get_driver_instance@mysql@sql@@YAPEAVMySQL_Driver@12@XZ)
(?get_driver_instance@mysql@sql@@YAPAVMySQL_Driver@12@XZ)
YAPEAV
和 YAPAV
之间的名称管理有什么区别?
有一个想法,我的问题与MySQL连接器库与我构建代码的方式之间的不兼容性有关。
我在网上搜索并发现了针对MySQL连接器1.1.0的错误,但它被更改为"不是错误"。
我正在使用Visual Studio 2010编译为使用64位平台的32位目标。
MySQL 连接器C++版本为 1.1.0。
MSVC 工具undname
是您的朋友。 使用它,你会发现
-
?get_driver_instance@mysql@sql@@YAPEAVMySQL_Driver@12@XZ
对应于:class sql::mysql::MySQL_Driver * __ptr64 __cdecl sql::mysql::get_driver_instance(void)
-
?get_driver_instance@mysql@sql@@YAPAVMySQL_Driver@12@XZ
对应于:class sql::mysql::MySQL_Driver * __cdecl sql::mysql::get_driver_instance(void)
区别在于__ptr64
装饰。 看起来您正在构建一个 32 位程序,但链接到为 64 位目标构建的库。
相关文章:
- C++MySQL C api用户输入行
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 为什么C++逐位AND运算符在不同大小的操作数中表现为这样
- 为什么 Clang 不允许"and"作为函数名称?
- 使用mysql c++连接器的未定义引用
- 位阵列上的快速AND运算
- 是否可以在 C++03 中定义'move-and-swap idiom'等效项
- 无法在C++中建立与MySQL数据库的连接
- mysql C++ connector [mysql-connector-c++-8.0.19-linux-glibc2
- C++应用程序 MySQL odbc 数据库连接错误:在引发"otl_tmpl_exception<>"实例后终止调用
- Poco FindMySql.cmake 无法找到 MySQL 源代码
- BoostPython and CMake
- 如何使用MySQL Connector and Make设置C++项目
- C-Free and MySQL connect
- Visual Studio Name Mangling "YAPEAV" and Mysql connector
- stdafx.h and MySQL
- c++ boost::archives and mySql BLOBs,反序列化错误
- Linking with MySQL and C++
- Eclipse, C++ and Mysql