[英]libsqlite3.dylib link with CMake
我正在嘗試使用CMake將libsqlite3.dylib與C ++鏈接,但我不斷收到以下錯誤:
Undefined symbols for architecture x86_64:
"_sqlite3_close", referenced from:
OpnavCamera::~OpnavCamera() in opnav_camera.cpp.o
OpnavCamera::updateState() in opnav_camera.cpp.o
"_sqlite3_exec", referenced from:
select_stmt(char const*) in opnav_camera.cpp.o
"_sqlite3_open", referenced from:
OpnavCamera::updateState() in opnav_camera.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [../modules/opnav_camera/_opnav_camera.so] Error 1
make[1]: *** [SimCode/CMakeFiles/_opnav_camera.dir/all] Error 2
make: *** [all] Error 2
在線瀏覽,看來我沒有成功鏈接圖書館。 我是CMake的新手,所以我不知道自己在做什么。
我已將以下內容添加到我的CMakelists.txt中:
#SQLite 3
# Look for the header file.
FIND_PATH(SQLITE3_INCLUDE_DIR NAMES sqlite3.h)
# Look for the library.
FIND_LIBRARY(SQLITE3_LIBRARY NAMES sqlite3.0)
# Handle the QUIETLY and REQUIRED arguments and set SQLITE3_FOUND to TRUE if all listed variables are TRUE.
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SQLITE3 DEFAULT_MSG SQLITE3_LIBRARY SQLITE3_INCLUDE_DIR)
# Copy the results to the output variables.
IF(SQLITE3_FOUND)
SET(SQLITE3_LIBRARIES ${SQLITE3_LIBRARY})
SET(SQLITE3_INCLUDE_DIRS ${SQLITE3_INCLUDE_DIR})
message( " Found ")
ELSE(SQLITE3_FOUND)
SET(SQLITE3_LIBRARIES)
SET(SQLITE3_INCLUDE_DIRS)
ENDIF(SQLITE3_FOUND)
set (CMAKE_SHARED_LINKER_FLAGS "-Wl,--as-needed")
MARK_AS_ADVANCED(SQLITE3_INCLUDE_DIRS SQLITE3_LIBRARIES)
CMake正在找到該庫,但我認為我只是在如何實際鏈接它方面缺少了一步。 在此處輸入圖片說明
我想念哪一塊?
ld: symbol(s) not found for architecture x86_64
看來您正在構建64位應用程序,並嘗試鏈接到32位庫。 您將需要鏈接到庫的64位版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.