예이 질문은 전에 질문되었습니다 ... 이전 답변에서 언급 한 모든 것을 시도했습니다. 내 설치가 정말 간단하므로 너무 열심히해서는 안됩니다.C++/mysql Connector - get_driver_instance에 대한 정의되지 않은 참조 - 이미 쉬운 작업을 시도했습니다.
저는 C++을 사용하여 mysql을 프로그래밍하려고합니다. 내 소스 코드는 여기에 '안녕하세요'형식의 예에서 verbatem을 가져온 것입니다
http://dev.mysql.com/doc/refman/5.1/en/connector-cpp-examples-complete-example-1.html
우분투 12.10에입니다. 악명 높은 나에게주는
g++ -Wall -o firsttry_prog -I/usr/include/mysqlcppconn -I/usr/local/boost_1_53_0 -L/usr/lib/x86_64-linux-gnu -l:libmysqlclient_r.so.18 -L/usr/lib/mysqlcppconn -lmysqlcppconn firsttry.cpp
그것은 (내가 -c 옵션을 사용하는 경우) 컴파일하지만 구축되지 않습니다 :
/tmp/ccn768hj.o: In function `main':
firsttry.cpp:(.text+0x3a): undefined reference to `get_driver_instance'
몇 가지 세부 사항 :
- 을 나는 노력하고 있어요 'firsttry.cpp' 그냥 소스 코드 파일을 명명 한 것입니다. 공식 예제에서 다시 축약했습니다.
- 내가 볼 수있는 것처럼 mysqlclient 라이브러리 및 mysqlcppconn 라이브러리. 이 질문이 이전에 물어 보았을 때가 여러 번 있었지만 대답은 그것들을 연결하는 것이 었습니다.
- 일부 다른 역사적 답변은 샘플 소스 코드가 잘못되었으며 해당 함수가 sql :: mysql 네임 스페이스 등에 있어야한다고 제안합니다. 소스 코드가 괜찮은지 확신합니다. 다시 말하지만, 컴파일되고, 소스 코드의 네임 스페이스를 변경하면 더 악화되는 것처럼 보입니다.
제공 할 수있는 도움에 대해 미리 감사드립니다.
'-l 것이 무엇입니까? '-lmysqlclient_r'이 아니어야합니까? –
감사합니다 Haroogan. 내가 그 - 난 : 사업에서 [링크] (http://stackoverflow.com/questions/335928/ld-cannot-find-an-existing-library) - 나는 그것이 전체 파일 이름을 지정하는 단지 방법이라고 생각 기존의 명명 스타일의 심볼릭 링크는 존재하지 않습니다. 그래서 -lmysqlclient_r을 시도하면 -lmysqlclient_r을 찾을 수 없다고 말했습니다. 여러분의 피드백에 따라 심볼릭 링크를 만들었습니다. 이제 -lmysqlclient_r을 사용할 수 있습니다. 그리고 get_driver_instance에 대한 동일한 오류가 발생합니다. 다른 생각? –
먼저'firsttry.cpp'를'firsttry.o'로 컴파일하고, 그 파일들을 MySQL 라이브러리와 링크하여 실행 파일에 연결하십시오. 나는. 'g ++ -Wall -I/usr/include/mysqlcppconn -I/usr/local/boost_1_53_0 -o firsttry.o firsttry.cpp' 그리고'g ++ firsttry.o -L/usr/lib/x86_64-linux-gnu -l : libmysqlclient_r.so.18 -L/usr/lib/mysqlcppconn -lmysqlcppconn -o firsttry'. –