提问人:RedBox 提问时间:10/22/2023 最后编辑:RedBox 更新时间:10/22/2023 访问量:41
通过 Conan 安装的软件包时出现链接器错误
Linker Error with packages installed through Conan
问:
我试图让 OpenCV 与柯南一起工作,但它不起作用。
我使用的是 Windows 10。
默认柯南配置文件:
[settings]
arch=x86_64
build_type=Release
compiler=msvc
compiler.cppstd=20
compiler.runtime=dynamic
compiler.version=193
os=Windows
我的项目文件夹的内容:
conanfile.txt
[requires]
opencv/4.5.5
[generators]
CMakeDeps
CMakeToolchain
CMakeLists.txt
cmake_minimum_required(VERSION 3.22)
project(minimal LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
find_package(OpenCV REQUIRED VERSION 4.5.5)
add_executable(prog main.cpp)
target_link_libraries(prog PRIVATE
${OpenCV_LIBS}
)
target_include_directories(prog PRIVATE
${OpenCV_INCLUDE_DIRS}
)
main.cpp
#include <opencv2/opencv.hpp>
int main()
{
cv::Mat mat{};
return 0;
}
我使用以下命令配置项目:
conan install . --output-folder=build --build=missing
cmake -B build --preset conan-default
然后,我尝试使用以下命令进行构建:
cmake --build --preset conan-release
但我收到此错误:
main.cpp
main.obj : error LNK2019: unresolved external symbol "public: __cdecl cv::Mat::Mat(void)" (??0Mat@cv@@QEAA@XZ) referenced in function main [C:\Users\redbox\Desktop\projects\opencvexample\build\prog.vcxproj]
main.obj : error LNK2019: unresolved external symbol "public: __cdecl cv::Mat::~Mat(void)" (??1Mat@cv@@QEAA@XZ) referenced in function main [C:\Users\redbox\Desktop\projects\opencvexample\build\prog.vcxproj]
C:\Users\redbox\Desktop\projects\opencvexample\build\Release\prog.exe : fatal error LNK1120: 2 unresolved externals [C:\Users\desktop\Desktop\projects\opencvexample\build\prog.vcxproj]
我还尝试通过柯南编译一个安装了QT的基本程序,但随后发生了类似的错误。奇怪的是,这个错误似乎不会发生在相当小的库上,比如 Zlib(Conan 示例中的基本 Zlib 示例工作正常)
我不知道这里出了什么问题。
答: 暂无答案
评论
target_link_libraries(prog PRIVATE OpenCV::OpenCV)
find_package()
CMakeDeps
没有定义(配方可以修复,因为它应该模仿官方的 CMake 配置文件)。链接导入的目标,它们在 opencv 配方中是正确的:OpenCV_LIBS
target_link_libraries(prog PRIVATE opencv_core)