c++ - 无法使用带有 CMake 的 OpenCV 编译程序
问题描述
在安装opencv
和使用 vcpkg 并通过必要的步骤将其包含在我的项目中之后,除了指令opencv[contrib]
之外,我无法编译任何东西。#include
我已经尝试过使用我在 Visual Studio 上使用 CMake 安装 OpenCV 的教程中可以找到的大部分内容。
最小(非)工作示例:
MWE.cc
#include <opencv2/opencv.hpp>
int main()
{
cv::namedWindow("test", cv::WINDOW_AUTOSIZE);
return 0;
}
CMakeLists.txt
cmake_minimum_required (VERSION 3.8)
project ("MWE")
# Add source to this project's executable.
add_executable (MWE "MWE.cc")
find_package (OpenCV REQUIRED)
target_link_libraries (MWE PRIVATE ${OpenCV_LIBS})
CMake 工具链文件选项在CMakeSettings.json
:D:\vcpkg\scripts\buildsystems\vcpkg.cmake
编译器输出
>------ Build All started: Project: MWE, Configuration: x64-Debug (default) ------
[1/2] Building CXX object CMakeFiles\MWE.dir\MWE.cc.obj
[2/2] Linking CXX executable MWE.exe
FAILED: MWE.exe
cmd.exe /C "cd . && "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E vs_link_exe --intdir=CMakeFiles\MWE.dir --rc="D:\Windows Kits\10\bin\10.0.18362.0\x86\rc.exe" --mt="D:\Windows Kits\10\bin\10.0.18362.0\x86\mt.exe" --manifests -- C:\PROGRA~2\MICROS~3\2019\COMMUN~1\VC\Tools\MSVC\1428~1.293\bin\Hostx86\x64\link.exe /nologo CMakeFiles\MWE.dir\MWE.cc.obj /out:MWE.exe /implib:MWE.lib /pdb:MWE.pdb /version:0.0 /machine:x64 /debug /INCREMENTAL /subsystem:console D:\vcpkg\installed\x64-windows\debug\lib\SDL2d.lib D:\vcpkg\installed\x64-windows\debug\lib\manual-link\SDL2maind.lib user32.lib gdi32.lib winmm.lib imm32.lib ole32.lib oleaut32.lib version.lib uuid.lib advapi32.lib setupapi.lib shell32.lib dinput8.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cmd.exe /C "cd /D "D:\MWE\out\build\x64-Debug (default)" && C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noprofile -executionpolicy Bypass -file D:/vcpkg/scripts/buildsystems/msbuild/applocal.ps1 -targetBinary "D:/MWE/out/build/x64-Debug (default)/MWE.exe" -installedDir D:/vcpkg/installed/x64-windows/debug/bin -OutVariable out""
LINK Pass 1: command "C:\PROGRA~2\MICROS~3\2019\COMMUN~1\VC\Tools\MSVC\1428~1.293\bin\Hostx86\x64\link.exe /nologo CMakeFiles\MWE.dir\MWE.cc.obj /out:MWE.exe /implib:MWE.lib /pdb:MWE.pdb /version:0.0 /machine:x64 /debug /INCREMENTAL /subsystem:console D:\vcpkg\installed\x64-windows\debug\lib\SDL2d.lib D:\vcpkg\installed\x64-windows\debug\lib\manual-link\SDL2maind.lib user32.lib gdi32.lib winmm.lib imm32.lib ole32.lib oleaut32.lib version.lib uuid.lib advapi32.lib setupapi.lib shell32.lib dinput8.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTFILE:CMakeFiles\MWE.dir/intermediate.manifest CMakeFiles\MWE.dir/manifest.res" failed (exit code 1120) with the following output:
D:\MWE\out\build\x64-Debug (default)\MWE.cc.obj : error LNK2019: unresolved external symbol "void __cdecl cv::namedWindow(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,int)" (?namedWindow@cv@@YAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z) referenced in function main
D:\MWE\out\build\x64-Debug (default)\MWE.exe : fatal error LNK1120: 1 unresolved externals
ninja: build stopped: subcommand failed.
Build All failed.
我对 C++(C 语言不错)和 Windows 编程有点陌生,所以如果这很简单,请原谅我。
解决方案
推荐阅读
- bash - 替换文本文件中的日期
- java - 如何使用来自另一个服务的令牌授权其余 API
- java - 使用 Java 的 Spark Big Query 连接器问题
- r - 你可以在 R 的 case_when 语句中使用 for 循环吗?
- java - 在 HTTP 503 上重新建立 TCP 连接
- python - DataFrame 到 OrderedDicts 列表 - 如何保留订单?
- php - 通过 API 从 Google Cloud 访问 YouTube 帐户以获取统计信息
- asp.net-core - Web API POST - 在邮递员中给出 500 错误 - 如何解决?
- reactjs - 如何将今天的日期设置为 Material UI 日期选择器的默认日期
- php - WordPress 5.5.3。致命错误:无法在 ...\wp-include 中重新声明 _wp_register_meta_args_whitelist()(之前在 ...\wp-includes\meta.php:1409 中声明)