解决 “error C2061: 语法错误: 标识符“noexcept” 或“abs”: 不允许重载函数的第二个 C 链接” 问题

本文记录了开发者在使用VS2017、Win10环境下对OBS开源代码进行二次开发时,遇到的noexcept编译错误。作者通过一步步排查,从环境配置、代码检查到解决方案的尝试,揭示了C++兼容性问题及如何正确处理cstdlib库的noexcept关键字。

此问题是在对OBS进行二次开发过程中遇到的,反正就是莫名其妙的就出现了,obs源码编译是在3个月前就编译好了的,最近需要添加新功能,再次编译过程就出现了此问题。

一开始我就觉得可能是VS环境的问题,但对vs开发环境的自信,就一直觉得是我添加的代码的问题,因此就一直执着于代码,解决过程中如下:

环境如下:

VS2017、WIN10、OBS开源代码

问题描述:

OBS编译过程中,源码中libobs 库的编译时,c++标准库cstdlib一直在报错noexcept,出现此错误:

 具体相关错误指向cstdlib的abs函数的问题,obs编译源文件如下(全是.c文件):

关键字noexcept作用: 

这是c++11新特性,此关键字告诉编译器,函数中不会发生异常,这有利于编译器对程序做更多的优化。
如果在运行时,noexecpt函数向外抛出了异常(如果函数内部捕捉了异常并完成处理,这种情况不算抛出异常),程序会直接终止,调用std::terminate()函数,该函数内部会调用std::abort()终止程序。

网址:htt

1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(19): error C2061: 语法错误: 标识符“acosf” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(19): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(19): error C2061: 语法错误: 标识符“asinf” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(19): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(20): error C2061: 语法错误: 标识符“atanf” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(20): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(20): error C2061: 语法错误: 标识符“atan2f” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(20): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(20): error C2061: 语法错误: 标识符“ceilf” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(20): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(21): error C2061: 语法错误: 标识符“cosf” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(21): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(21): error C2061: 语法错误: 标识符“coshf” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(21): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(21): error C2061: 语法错误: 标识符“expf” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(21): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(22): error C2061: 语法错误: 标识符“fabsf” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(22): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(22): error C2061: 语法错误: 标识符“floorf” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(22): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(22): error C2061: 语法错误: 标识符“fmodf” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(22): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(23): error C2061: 语法错误: 标识符“frexpf” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(23): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(23): error C2061: 语法错误: 标识符“ldexpf” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(23): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(23): error C2061: 语法错误: 标识符“logf” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(23): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(24): error C2061: 语法错误: 标识符“log10f” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(24): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(24): error C2061: 语法错误: 标识符“modff” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(24): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(24): error C2061: 语法错误: 标识符“powf” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(24): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(25): error C2061: 语法错误: 标识符“sinf” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(25): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(25): error C2061: 语法错误: 标识符“sinhf” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(25): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(25): error C2061: 语法错误: 标识符“sqrtf” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(25): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(26): error C2061: 语法错误: 标识符“tanf” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(26): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(26): error C2061: 语法错误: 标识符“tanhf” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(26): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(28): error C2061: 语法错误: 标识符“acosl” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(28): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(28): error C2061: 语法错误: 标识符“asinl” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(28): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(29): error C2061: 语法错误: 标识符“atanl” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(29): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(29): error C2061: 语法错误: 标识符“atan2l” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(29): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(29): error C2061: 语法错误: 标识符“ceill” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(29): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(30): error C2061: 语法错误: 标识符“cosl” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(30): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(30): error C2061: 语法错误: 标识符“coshl” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(30): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(30): error C2061: 语法错误: 标识符“expl” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(30): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(31): error C2061: 语法错误: 标识符“fabsl” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(31): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(31): error C2061: 语法错误: 标识符“floorl” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(31): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(31): error C2061: 语法错误: 标识符“fmodl” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(31): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(32): error C2061: 语法错误: 标识符“frexpl” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(32): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(32): error C2061: 语法错误: 标识符“ldexpl” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(32): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(32): error C2061: 语法错误: 标识符“logl” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(32): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(33): error C2061: 语法错误: 标识符“log10l” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(33): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(33): error C2061: 语法错误: 标识符“modfl” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(33): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(33): error C2061: 语法错误: 标识符“powl” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(33): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(34): error C2061: 语法错误: 标识符“sinl” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(34): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(34): error C2061: 语法错误: 标识符“sinhl” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(34): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(34): error C2061: 语法错误: 标识符“sqrtl” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(34): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(35): error C2061: 语法错误: 标识符“tanl” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(35): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(35): error C2061: 语法错误: 标识符“tanhl” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(35): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(37): error C2061: 语法错误: 标识符abs” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(37): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(39): error C2061: 语法错误: 标识符“acos” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(39): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(39): error C2061: 语法错误: 标识符“asin” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(39): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(40): error C2061: 语法错误: 标识符“atan” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(40): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(40): error C2061: 语法错误: 标识符“atan2” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(40): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(40): error C2061: 语法错误: 标识符“ceil” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(40): error C2059: 语法错误:“;” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(41): error C2061: 语法错误: 标识符“cos” 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(41): fatal error C1003: 错误计数超过 100;正在停止编译 1>根据错误修改再次生成
11-18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值