Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ libsqlite3.dylib与CMake的链接_C++_Sqlite_Cmake - Fatal编程技术网

C++ libsqlite3.dylib与CMake的链接

C++ libsqlite3.dylib与CMake的链接,c++,sqlite,cmake,C++,Sqlite,Cmake,我尝试用CMake链接LIbQuiLe3.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_exe

我尝试用CMake链接LIbQuiLe3.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位版本的库进行链接。

看起来库是64位Matts MacBook Pro:~Matt$file/usr/lib/libsqlite3.0.dylib/usr/lib/libsqlite3.0.dylib:Mach-O通用二进制文件,具有3种体系结构:[x86_64:Mach-O 64位动态链接共享库x86_64][i386][x86_64h]/usr/lib/libsqlite3.0.dylib(用于体系结构x86_64):Mach-O 64位动态链接共享库x86_64/usr/lib/libsqlite3.0.dylib(用于体系结构i386):Mach-O动态链接共享库i386/usr/lib/libsqlite3.0.dylib(用于体系结构x86_64h):Mach-O 64位动态链接共享库x86_64h