2012-01-13 2 views
2

나는 자신에게 Windows 프로그래밍 및 Visual Studio에 익숙해지는 프로젝트를 제공했습니다. 내 프로젝트에서 사용할 수 있도록 MySQL 라이브러리에 연결하는 데 문제가 있습니다. LNK2019 오류가 계속 발생하는데, 이는 대부분 .lib 파일을 제대로 연결하지 않는다는 것을 의미합니다. 이미 include 디렉토리와 라이브러리 디렉토리를 포함하도록 구성을 설정했습니다. (나는 또한 VC++ 디렉토리를 설정하고 C/C++/링커의 다양한 조합을 시도했다.) 여기 Visual Studio 2010 - MySQL을 연결하는 것

Error 1 error LNK2019: unresolved external symbol [email protected] referenced in function "public: void __thiscall Database::connect_db(void)" ([email protected]@@QAEXXZ) D:\Media\Documents\Visual Studio 2010\Projects\swtPrice Server\swtPrice Server\Database.obj 
Error 2 error LNK2019: unresolved external symbol [email protected] referenced in function "public: void __thiscall Database::connect_db(void)" ([email protected]@@QAEXXZ) D:\Media\Documents\Visual Studio 2010\Projects\swtPrice Server\swtPrice Server\Database.obj 
Error 3 error LNK1120: 2 unresolved externals D:\Media\Documents\Visual Studio 2010\Projects\swtPrice Server\Debug\swtPrice Server.exe 1 

내가 온라인 복사 코드의 조각이며, 컴파일하려고 : 나는 구성

MYSQL *connection, mysql; 
MYSQL_RES *result; 
MYSQL_ROW row; 
int query_state; 

mysql_init(&mysql); 
//connection = mysql_real_connect(&mysql,"host","user","password","database",0,0,0); 
connection = mysql_real_connect(&mysql,"localhost","bainm","not_telling","cpp_data",0,0,0); 
if (connection == NULL) { 
    //cout << mysql_error(&mysql) << endl; 
    //return 1; 
} 

을 내 프로젝트는 MySQL의 include 디렉토리를 포함합니다. 이것은 C/C++ 탭 아래의 명령 줄에서 보이는 모양입니다.

/I"D:\Program Files\MySQL\MySQL Server 5.5\include" /ZI /nologo /W1 /WX- /Od /Oy- /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /Gm /EHsc /RTC1 /GS /fp:precise /Zc:wchar_t /Zc:forScope /Yu"StdAfx.h" /Fp"Debug\swtPrice Server.pch" /Fa"Debug\" /Fo"Debug\" /Fd"Debug\vc100.pdb" /Gd /analyze- /errorReport:queue 

필자는 MySQL의 라이브러리 디렉토리를 포함하도록 구성했습니다. 이것은 링커에서 명령 행에서 같은 모습입니다 : 어떤 도움에 감사드립니다

Directory of D:\Program Files\MySQL\MySQL Server 5.5\lib 

05/06/2011 10:38 AM <DIR>   . 
05/06/2011 10:38 AM <DIR>   .. 
05/06/2011 10:38 AM <DIR>   debug 
03/31/2011 04:53 PM   4,177,408 libmysql.dll 
03/31/2011 04:53 PM   23,920 libmysql.lib 
03/31/2011 04:52 PM  10,625,266 mysqlclient.lib 
05/06/2011 10:38 AM <DIR>   plugin 

:

/OUT:"D:\Media\Documents\Visual Studio 2010\Projects\swtPrice Server\Debug\swtPrice Server.exe" /NOLOGO /LIBPATH:"D:\Program Files\MySQL\MySQL Server 5.5\lib" "D:\Program Files\MySQL\MySQL Server 5.5\lib\libmysql.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /MANIFEST /ManifestFile:"Debug\swtPrice Server.exe.intermediate.manifest" /ALLOWISOLATION /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"D:\Media\Documents\Visual Studio 2010\Projects\swtPrice Server\Debug\swtPrice Server.pdb" /SUBSYSTEM:CONSOLE /PGD:"D:\Media\Documents\Visual Studio 2010\Projects\swtPrice Server\Debug\swtPrice Server.pgd" /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 /ERRORREPORT:QUEUE 

이것은 MySQL의 라이브러리 디렉토리처럼 보이는 방법이다. 사전에 도움을 주셔서 감사합니다.

+1

빌드에 mysqlclient.lib를 추가해 보았습니까? 또한 32 비트 라이브러리가 있는지 확인하십시오. 비슷한 문제가 있습니다. –

+0

그게 전부 였어. mySQL을 제거하고 32 비트 버전을 설치했는데 코드가 잘 컴파일되었습니다. 이전에는 약 1 년 전에 설치되었던 64 비트 버전의 mySQL을 사용했습니다. 그러나 현재 libmysql.dll이 컴퓨터에 없기 때문에 프로그램을 시작할 수 없습니다.이 문제를 해결하려면 프로그램을 다시 설치하십시오. " 조언 해 주셔서 감사합니다. – swtdrgn

+0

실행할 수 있습니다. 누구든지 .dll 파일 경로를 .dll을 같은 디렉토리 .exe에 던지기보다는 지정하는 방법을 알고 있습니까? – swtdrgn

답변

3

VisualStudio2010의 모든 mysql API 함수에 대한 링크 오류를 가져 오는 것과 동일한 문제가 발생했습니다. 이 문제는 Visual Studio에서 64 비트 MySQL 빌드를 사용하여 32 비트 대상을 사용했기 때문에 발생했음을 확인했습니다. 빌드 구성에 x64 빌드를 추가했는데 오류없이 연결했습니다.

+0

이것이 내 문제를 해결했습니다. – Laurence