OpenCV源码编译xfeatures2d.VGG出错解决

error LNK2019: 无法解析的外部符号 "public: virtual class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl cv::xfeatures2d::VGG::getDefaultName(void)const " (?getDefaultName@VGG@xfeatures2d@cv@@UEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ),该符号在函数 "[thunk]:public: virtual class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl cv::xfeatures2d::VGG::getDefaultName`vtordisp{4294967292,0}' (void)const " (?getDefaultName@VGG@xfeatures2d@cv@@$4PPPPPPPM@A@EBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) 中被引用
22>D:\VSProjects\opencv\build\bin\Release\opencv_xfeatures2d4120.dll : fatal error LNK1120: 1 个无法解析的外部命令

今天编译opencv的时候遇到这个问题,记录一下解决方案,大家要是遇到相同的问题可以借鉴下。
1、查看build路径下的CMakeDownloadLog.txt
2、看到缺少vgg_generated_xx.i 和boostdesc_bgm.i等文件
3、去opencv_3rdparty下载对应的文件,并放至自己指定的build路径下的downloads\xfeatures2d中,如D:/opencv/build/downloads\xfeatures2d\,然后重新配置,生成,编译即可

### 解决C语言在Visual Studio中无法打开OpenCV的`xfeatures2d.hpp`头文件的问题 当遇到在Visual Studio中使用C语言项目尝试包含OpenCV `xfeatures2d.hpp`头文件失败的情况时,这通常是因为配置不正确或路径设置错误。以下是详细的解决方案: #### 配置环境变量 确保已将OpenCV库的相关路径添加到系统的环境变量中。具体来说,应包括以下两个部分: - **Include Path**: 添加OpenCV安装目录下的`include`子目录路径。 - **Library Path**: 将`lib`子目录加入链接器库路径。 这些操作可以通过修改系统属性来完成,也可以通过Visual Studio项目的属性页面来进行局部调整[^1]。 #### 修改头文件包含方式 如果正在使用的OpenCV版本较新,则可能不再支持某些旧版API。对于`xfeatures2d.hpp`而言,其位置发生了变化。应当更新代码中的包含指令为新的标准形式: ```cpp #include <opencv2/xfeatures2d.hpp> ``` 注意这里假设是在编写C++程序;如果是纯C项目,则需要注意OpenCV主要面向的是C++接口设计,因此建议考虑转换成C++工程以便更好地兼容OpenCV功能。 #### 设置附加依赖项 除了正确的头文件外,还需要确保项目能够访问所需的静态/动态链接库(.lib/.dll)。可以在Visual Studio中通过如下步骤实现这一点: 1. 右键点击解决方案资源管理器里的项目名->选择“属性” 2. 寻找并展开左侧列表中的“链接器(Linker)”选项卡 3. 进入“输入(Input)”分类下,在“附加依赖项(Additional Dependencies)”字段内填入必要的`.lib`文件名称(如`opencv_xfeatures2d450.lib`) 此外,还需确认运行时环境中存在对应的DLL文件,可通过复制它们到可执行文件所在目录或其他被操作系统搜索的标准位置来达成此目的[^2]。 #### 使用适当版本的OpenCV 考虑到不同版本之间可能存在差异,特别是API变更方面的影响,推荐验证当前使用的OpenCV版本是否确实提供了所需的功能模块(`xfeatures2d`)以及相应的头文件。必要时升级至最新稳定发行版可能会解决问题[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值