Visual Studio Mangling & quot; YAPEAV & quot; и Mysql разъем

Я получаю неразрешенную ошибку внешнего символа при связывании моего кода с MySQL Connector 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 Connector и тем, как я строю свой код.

Я искал в Интернете и обнаружил ошибку в MySQL Connector 1.1.0, но она была изменена на «не ошибка».

Я использую компиляцию Visual Studio 2010 для 32-битной цели с использованием 64-битной платформы.
MySQL, Connector C ++, является версией 1.1.0.

4

Решение

Инструмент 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-битной цели.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]