macos使用C+±connector連接mysql環境配置
多有借鑒:https://blog.csdn.net/zhang35/article/details/106724791/
其實官網的教程只說明了最終步驟,但是你去執行一定會報錯,
錯誤可以分為兩種:
- 找不到頭檔案(如mysql.h)
- 找不到lib庫(如libssl.1.1.dylib)
第一個問題需要你指定頭檔案所在的目錄,其實就是兩個目錄/usr/local/mysql/include,/usr/local/mysql-connector-c++/include,只要在IDE中指定即可,或者命令列g++編譯的話就直接用-I引數指定,
第二個問題需要你指定庫,也是在兩個目錄里/usr/local/mysql/lib和/usr/local/mysql-connector-c++/lib64/,命令列的話使用-I引數指定,
所以集合起來寫就是這樣:g++ -std=c++11 -I /usr/local/mysql-connector-c++-8.0.22/include -I /usr/local/mysql/include -L /usr/local/mysql-connector-c++-8.0.22/lib64 -L /usr/local/mysql/lib mysql.cpp -lmysqlcppconn8 -lmysqlclient -lssl -lcrypto -lresolv(如果你用jdbc版c++Connector的話,就把-lmysqlcppconn8改成-lmysqlcppconn,不然會出現找不到_get_driver_instace()錯誤)
這樣就可以通過編譯,不過這個用到的是動態庫,你要執行的話它會報找不到lib庫(其實就在剛才-L的兩個目錄里)的錯誤,
一個解決方案是使用靜態庫編譯,可行,但就會帶來靜態庫的一些問題,先上解決方案:g++ -std=c++11 -DSTATIC_CONCPP -lmysqlcppconn-static -I /usr/local/mysql-connector-c++-8.0.22/include -I /usr/local/mysql/include mysql.cpp /usr/local/mysql-connector-c++-8.0.22/lib64/libmysqlcppconn8-static.a -lssl -lcrypto -lpthread
再一個解決方案就是仍用動態庫,但是把剛才-L的兩個目錄中的lib庫拷貝到默認的動態庫路徑/usr/local/lib里,這樣執行程式時就可以找到這些動態庫了,
另外提供cmake版本:
cmake_minimum_required(VERSION 3.17)
project(untitled)
set(CMAKE_CXX_STANDARD 11)
include_directories(/usr/local/mysql/include /usr/local/mysql-connector-c++-8.0.22/include/jdbc) # 指定頭檔案目錄,同gcc -I
include_directories(/Users/peter/代碼/boost_1_75_0) # 對,jdbc版connector需要boost庫
link_directories(/usr/local/mysql/lib /usr/local/mysql-connector-c++-8.0.22/lib64)
link_libraries("/usr/local/lib/libmysqlcppconn.dylib") # 指定元件,同gcc -lmysqlcppconn
add_executable(mysql main.cpp)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/255869.html
標籤:其他
