SQLite 在 Windows 上的编译时不链接

sqlite do not link at compile time on windows

本文关键字:链接 编译 Windows SQLite      更新时间:2023-10-16

我遇到了一个奇怪的问题。我无法链接到sqlite3 lib(使用柯南的全新安装(。我正在尝试将sqlite3添加到我的一个已经包含大量boost代码的项目中,但这是我第一次遇到这种错误。

int main(int argc, char *const argv[])
{
sqlite3 *dbb = NULL;
sqlite3_open("esrerer", &dbb);
}

这是我收到的错误消息:

main.cpp.obj : error LNK2019: unresolved external symbol_sqlite3_open referred in function main

我使用柯南作为库:

[requires]
boost/1.71.0@conan/stable
sqlite3/3.29.0@bincrafters/stable
[generators]
cmake

以防万一,我的cmake的内容:

cmake_minimum_required(VERSION 3.14)
project(project)
set(CMAKE_CXX_STANDARD 14)
include_directories(Server/include)
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup()
find_package(sqlite3 REQUIRED)
add_executable(project Server/src/main.cpp)
target_link_libraries(project ${CONAN_LIBS})

编辑:柯南个人资料

[settings]
arch=x86_64
arch_build=x86_64
build_type=Release
compiler=Visual Studio
compiler.runtime=MD
compiler.version=16
os=Windows
os_build=Windows
[options]
[build_requires]
[env]

你想找到SQLITE3作为CMake模块,但你需要考虑两件事:

  • 提供 sqlite3 的柯南包在那里有一个 cmake?您可以通过查看包文件夹来检查它:

    柯南信息 --路径 sqlite3/3.29.0@bincrafters/稳定

    ls/home/user/.conan/data/sqlite3/3.29.0/bincrafters/stable/package/6745b2c67ece017487d93454786f9082519559e7/

那里有一个Find CMake文件,但如您所见,它是驼峰大小写的,如果您在Unix系统上运行,则知道文件名区分大小写。所以你需要改变你的find_package语句:

find_package(SQLite3 REQUIRED)
柯南
  • 包一般不提供任何CMake文件,因为柯南能够生成它们:

https://docs.conan.io/en/latest/integrations/build_system/cmake.html

因此,在您的情况下,您可以使用cmake_find_package+cmake

[requires]
boost/1.71.0@conan/stable
sqlite3/3.29.0@bincrafters/stable
[generators]
cmake
cmake_find_package

生成的查找 cmake 文件将使用配方中的相同名称:

Findsqlite3.cmake

问候!