【问题标题】:sqlite do not link at compile time on windowssqlite 在 Windows 上的编译时不链接
【发布时间】:2020-01-18 20:08:10
【问题描述】:

我遇到了一个奇怪的问题。我无法链接到 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]

【问题讨论】:

  • 嗨!您能否分享您当前用于构建的个人资料?设置,选项,环境,...

标签: c++ windows sqlite linker-errors conan


【解决方案1】:

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

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

    柯南信息 --paths sqlite3/3.29.0@bincrafters/stable

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

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

find_package(SQLite3 REQUIRED)
  • Conan 包通常不提供任何 CMake 文件,因为 Conan 能够生成它们:

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

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

Findsqlite3.cmake

问候!

【讨论】:

  • 柯南似乎不是问题。只是出于好奇,我自己编译了 sqlite3 库,但仍然出现了链接器问题。似乎无论库的链接方式如何,它都找不到函数符号,这很奇怪。
  • 您能分享一下您正在执行的步骤吗? sqlite3 的 Appveyor 状态很好,所以它对你来说非常具体。我需要更多详细信息来重现您的问题。您能否分享您的整个日志(包括命令和所有 cmake 输出)。
  • 我无法重现您的错误。这是我的整个日志:gist.github.com/uilianries/4cca93b2cc0772d13913d899bc789901
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-15
  • 1970-01-01
相关资源
最近更新 更多