3

MySQL 커넥터를 사용하여 MySQL 데이터베이스와 통신하는 프로그램이 있습니다. 응용 프로그램은 Visual Studio 2008을 사용하여 정상적으로 실행됩니다. Visual Studio 2010을 사용하여 응용 프로그램을 빌드하려고합니다. 문제가 발생한 곳입니다.해결되지 않은 기호 : sql :: mysql :: get_driver_instance (void)

MySQL Connector 1.05는 VS 2010에서 지원되지 않으며 VS 2010에서 작동하는 1.1.0의 이진 버전이 없습니다. MySQL 정보에는 Connector C++ 1.10의 소스를 다운로드하고 VS로 빌드한다고 나와 있습니다 많은 일을 한 후에 나는 그것을 세웁니다. 예제가 실행됩니다. 그러나

, 나는 새로 건설 커넥터 C++ 1.1.0 내 응용 프로그램을 빌드 할 때, 나는 다음과 같은 오류 메시지가 :

error LNK2019: unresolved external symbol "class sql::mysql::MySQL_Driver * __cdecl sql::mysql::get_driver_instance(void)" ([email protected]@[email protected]@[email protected]@XZ) referenced in function "private: void __thiscall Database_NS::Manager::initialize_db_driver(void)const " ([email protected]@[email protected]@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를 사용하여 링크를 시도했지만 여전히 오류 메시지가 계속 표시됩니다.

CPPCONN_PUBLIC_FUNC MySQL_Driver * get_driver_instance(); 

참고 다른 리턴 값 :

흥미로운 점은 VS 2010에있어서, 상기 소스 선이 선언을 사용한다는 것이다.

Visual Studio 2010 및 커넥터 프로젝트 예제를 사용할 때 VS 2010은 connect.cpp에 의해 사용되는 get_driver_instance()의 선언 또는 함수 선언을 찾을 수 없습니다. 내 프로그램의 문장은 connect.cpp에서 사용 된 정확한 문장입니다. 아무런 변경없이 복사했기 때문입니다.

다른 사람들이 다른 드라이버를 사용하여이 문제를 해결했습니다. 그러나 필자는 VS2008에서 작동하지 않는 한 내 코드를 변경하고 싶지 않습니다.

이 문제에 대한 또 다른 대답은 "mysqlcppconn_EXPORTS"를 정의하는 것이지만,이 방법도 작동하지 않으며 응답에 대한 주석에도보고됩니다.

여기 내 질문은 :
1. 사람이 MySQL의 커넥터 1.1.0 2010 비주얼 스튜디오 작업에 도착 했습니까?
그렇다면 단계별로 답장하고 dll 또는 정적 라이브러리을 표시하십시오.
2. VS 컴파일러는 Driver *을 반환하는 함수가 아닌 MySQL_Driver *을 반환하는 get_driver_instance() 함수를 어떻게 선택합니까?
모호한 함수에 대한 경고 또는 오류가 발생하지 않습니다 (오버로드는 반환 유형 이외의 다른 점에서 달라야하므로).

Visual Studio 2010을 Windows-7x64-bit에서 사용하고 있습니다. MySQL Connector C++ 1.1.0.

은 참조 :
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++?

답변

1

일부 기능 이름이 변경되었습니다. 최선의 해결책은 전처리 조건문을 사용하여 이들을 구별하는 것입니다.

0

내가 너무 같은 문제가, 내가 점점 계속 :

*sampletest.obj : error LNK2001: unresolved external symbol __imp__get_driver_instance* 

32 비트 커넥터를 사용해 보았지만 문제가 해결되었지만 (운이 좋다면 문제가 해결 될 수 있습니다), 64 비트 mysql, Windows 7을 사용 했으므로 약간의 문제가있었습니다. 호환성 문제 .. 나는 여전히 위의 문제에 대한 해결책을 찾고있다.

단어별로 자습서를 따라 모든 라이브러리를 연결했습니다. C++ 1.10 커넥터에 문제가있을 수 있습니다.

+1

마침내 OS/컴파일러 버전간에 "#ifdef"문을 사용했습니다. MySQL 커넥터에는 함수 이름이 변경되었습니다. –

관련 문제