第六十四篇:error LNK2019: 无法解析的外部符号 cvRound

本文介绍了在使用较新版本的OpenCV时遇到的老版本函数如cvRound、cvFloor和cvCeil等的兼容性问题,并提供了两种解决方案:一是直接替换为新版函数;二是自定义这些函数。

转载请注明出处。  

作者:liaojiacai    邮箱: ljc_v2x_adas@foxmail.com


之前老版本opencv代码放在opencv3.1下用的时候出现了这个错误


error LNK2019: 无法解析的外部符号 cvRound

查了一下,这是老版本的写法,解决方法:

1、直接将项目工程中所有的cvRound替换成round就可以了

2、也可以在自己写一个这个函数,这个函数是四舍五入的函数

其他的出现报错的还有cvFloor, cvCeil,同样的改法

over!!!

以下VC2019编译错误是缺少什么库文件1>MetaTRCcore.lib(YangSRtp.obj) : error LNK2001: 无法解析外部符号 _srtp_protect 1>MetaTRCcore.lib(YangSRtp.obj) : error LNK2001: 无法解析外部符号 _srtp_unprotect 1>MetaTRCcore.lib(YangSRtp.obj) : error LNK2001: 无法解析外部符号 _srtp_create 1>MetaTRCcore.lib(YangSRtp.obj) : error LNK2001: 无法解析外部符号 _srtp_crypto_policy_set_rtp_default 1>MetaTRCcore.lib(YangSRtp.obj) : error LNK2001: 无法解析外部符号 _srtp_dealloc 1>MetaTRCcore.lib(YangSRtp.obj) : error LNK2001: 无法解析外部符号 _srtp_protect_rtcp 1>MetaTRCcore.lib(YangSRtp.obj) : error LNK2001: 无法解析外部符号 _srtp_unprotect_rtcp 1>MetaTRCcore.lib(YangSslOpenssl.obj) : error LNK2001: 无法解析外部符号 _srtp_init 1>MetaTRCcore.lib(YangSslOpenssl.obj) : error LNK2001: 无法解析外部符号 _srtp_shutdown 1>MetaTRCcore.lib(YangSctp.obj) : error LNK2001: 无法解析外部符号 _usrsctp_init 1>MetaTRCcore.lib(YangSctp.obj) : error LNK2001: 无法解析外部符号 _usrsctp_socket 1>MetaTRCcore.lib(YangSctp.obj) : error LNK2001: 无法解析外部符号 _usrsctp_setsockopt 1>MetaTRCcore.lib(YangSctp.obj) : error LNK2001: 无法解析外部符号 _usrsctp_sendv 1>MetaTRCcore.lib(YangSctp.obj) : error LNK2001: 无法解析外部符号 _usrsctp_bind 1>MetaTRCcore.lib(YangSctp.obj) : error LNK2001: 无法解析外部符号 _usrsctp_connect 1>MetaTRCcore.lib(YangSctp.obj) : error LNK2001: 无法解析外部符号 _usrsctp_close 1>MetaTRCcore.lib(YangSctp.obj) : error LNK2001: 无法解析外部符号 _usrsctp_shutdown 1>MetaTRCcore.lib(YangSctp.obj) : error LNK2001: 无法解析外部符号 _usrsctp_conninput 1>MetaTRCcore.lib(YangSctp.obj) : error LNK2001: 无法解析外部符号 _usrsctp_set_non_blocking 1>MetaTRCcore.lib(YangSctp.obj) : error LNK2001: 无法解析外部符号 _usrsctp_register_address 1>MetaTRCcore.lib(YangSctp.obj) : error LNK2001: 无法解析外部符号 _usrsctp_deregister_address 1>MetaTRCcore.lib(YangSctp.obj) : error LNK2001: 无法解析外部符号 _usrsctp_set_ulpinfo 1>MetaTRCcore.lib(YangSctp.obj) : error LNK2001: 无法解析外部符号 _usrsctp_sysctl_set_sctp_ecn_enable 1>libcrypto.lib(cryptlib.obj) : error LNK2001: 无法解析外部符号 __vsnwprintf 1>libcrypto.lib(cryptlib.obj) : error LNK2001: 无法解析外部符号 __vsnprintf
最新发布
08-23
<think>嗯,用户需要解决VC2019编译中的链接错误LNK2001,涉及_srtp_和_usrsctp_这两个外部符号。这明显是项目缺少特定库文件导致的典型问题。 用户提供的引用内容很有参考价值:第一个引用说明多媒体函数需要链接winmm.lib,第二个引用提到旧版stdio函数需要legacy_stdio_definitions.lib。虽然具体符号不同,但解决思路一致——都是通过添加对应库文件解决。 考虑到_srtp_和_usrsctp_这两个前缀: - srtp应该是Secure Real-time Transport Protocol的缩写,相关库可能是libsrtp.lib或srtp2.lib - usrsctp应该是用户态SCTP协议栈,库文件通常叫usrsctp.lib 用户可能正在开发网络音视频项目,比如WebRTC相关应用。这类项目常需要安全传输和时间敏感处理,所以会依赖这两个协议库。 需要提醒用户注意库文件的版本兼容性。比如usrsctp有新旧版本差异,32位和64位库也不能混用。如果用户从源码编译这些库,要确认编译参数和主项目一致。 另外想到一个潜在问题:有时项目配置了"使用动态库",但实际提供的是静态库文件,这也会导致链接错误。可以在回复中补充说明这点。</think>以下是针对VC2019编译错误 **LNK2001: 无法解析外部符号 _srtp_** 和 **_usrsctp_** 的解决方案,结合引用信息和系统级分析整理: --- ### **问题原因** 错误表明链接器无法找到 `srtp` 和 `usrsctp` 相关的函数实现。这两个符号属于 **安全实时传输协议(SRTP)** 和 **用户态SCTP协议栈(usrsctp)** 的库文件,需手动添加依赖库。 --- ### **解决方案** #### 1. **确认库文件存在并正确安装** - **SRTP库**:确保已安装 [libsrtp](https://github.com/cisco/libsrtp) 开发包,库文件通常为 `srtp2.lib` 或 `libsrtp.lib`。 - **usrsctp库**:从 [官方仓库](https://github.com/sctplab/usrsctp) 编译获取库文件 `usrsctp.lib`。 #### 2. **添加库路径到项目配置** 在VC2019中操作: - **步骤**: `项目属性 → 链接器 → 常规 → 附加库目录` 添加库文件所在路径(如 `C:\srtp\lib` 和 `C:\usrsctp\lib`)。 #### 3. **指定依赖库名称** - **步骤**: `项目属性 → 链接器 → 输入 → 附加依赖项` 添加库文件名: ``` srtp2.lib;usrsctp.lib; // 根据实际文件名调整 ``` #### 4. **检查头文件包含** - 在代码中正确包含头文件: ```cpp #include <srtp2/srtp.h> // SRTP头文件 #include <usrsctp.h> // usrsctp头文件 ``` - 确保头文件路径在 `项目属性 → C/C++ → 常规 → 附加包含目录` 中已配置。 #### 5. **验证库文件兼容性** - 确认库文件的编译平台(x86/x64)与当前项目一致。 - 若库文件为动态库(`.dll`),需将 `.dll` 文件放入可执行文件目录。 --- ### **补充说明** - **引用扩展分析**: - 类似 `LNK2019` 错误(如 `__imp_mciSendCommandW`)需链接 `winmm.lib`[^1],而 `_sprintf` 错误需链接 `legacy_stdio_definitions.lib`[^2]。本例遵循相同逻辑:**缺失特定功能的库文件**。 - 开源库(如SRTP/usrsctp)通常需手动编译生成 `.lib` 文件,未正确安装是主因。 --- ### **相关问题** 1. 如何编译 `libsrtp` 和 `usrsctp` 库以生成VC2019可用的 `.lib` 文件? 2. 若项目依赖多个第三方库,如何高效管理VC2019的链接器配置? 3. 动态库(`.dll`)与静态库(`.lib`)在解决链接错误时有何区别? [^1]: 报错:错误 LNK2019 无法解析外部符号__imp_mciSendCommandW...如何解决? [^2]: LNK2001:无法解析外部符号_sprintf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值