首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >error C2039: “ac_strlen“: 不是 “std“ 的成员

error C2039: “ac_strlen“: 不是 “std“ 的成员

作者头像
用户3519280
发布于 2023-07-08 14:40:28
发布于 2023-07-08 14:40:28
9320
举报
文章被收录于专栏:c++ 学习分享c++ 学习分享

error C2039: “ac_strlen”: 不是 “std” 的成员 vs2019编译cgal5.5出现的错误, vc14.2-x64\include\boost-1_82\boost\math\policies\error_handling.hpp(101,39): error C2039: “ac_strlen”: 不是 “std” 的成员

代码语言:javascript
复制
<AdditionalIncludeDirectories>C:\Program Files (x86)\CGAL\include;D:\Cgal\CGAL-5.5.2\auxiliary\gmp\include;D:\Cgal\cmake\boost_1_82_0\output\vc14.2-x64\include\boost-1_82;.;.\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
代码语言:javascript
复制
<AdditionalLibraryDirectories>C:\Program Files %28x86%29\CGAL\lib;D:\Cgal\cmake\boost_1_82_0\output\vc14.2-x64\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
代码语言:javascript
复制
<AdditionalDependencies>AcDrawBridge.lib;acgeoment.lib;D:\Cgal\CGAL-5.5.2\auxiliary\gmp\lib\libgmp-10.lib;D:\Cgal\CGAL-5.5.2\auxiliary\gmp\lib\libmpfr-4.lib;%(AdditionalDependencies)</AdditionalDependencies>

在arx2021里面,果真有个类叫ac_tcslen,

error C2039: “function”: 不是 “std” 的成员的解决方法 这个错误通过某度没找到合适的解决方案,故记录下来

其实如果使用 google 搜索错误的英文关键词,大概第一条就是解决问题的链接

Large number of “‘function’ is not a member of ‘std’” errors #435 我在这里记录的是遇到问题的过程,我们项目中有个需求,其中要添加 defer_ptr.h 头文件,这个头文件的功能跟智能指针有点像,它的作用是在出了作用域后自动释放对象

该头文件在老项目中是可以通过编译的,但是在新项目中就会报错

比较新旧项目花了挺长时间的,其中三方依赖项都是一样的,配置也基本类似,还是没法发现哪个地方缺少了

后面谷歌了一下,找到了官方的解释,应该是编译库缺少了 WinRT 的依赖,安装 WinRT 以及一些缺失的功能就可以了

链接:https://github.com/microsoft/terminal/pull/449

另外注意的是,这个错误似乎只存在 vs2019 和 v142 工具集上,我也的确是这样的配置,其他的,比如在 vs2022 上没试过

还有另一个非官方的解决方法(我是使用这个解决问题的),这个只要添加一个 functional 头文件即可,编译后,所有连锁错误全部消失了

小结一下:一开始我并没有搜索 error C2039 错误,因为下面的语法错误,缺少类型之类的错误更为常见,就从这些错误下手,搜索了大量的案例,可是得到的解决方案都不起作用,

最后才搜索 error C2039,没花多长时间就解决了,故我给的建议是,如果遇到一大堆报错,不如从第一个错误开始看,没准第一个错误才是罪恶根源。

还有就是,技术方面的问题,还是 google 来的更纯粹

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-06-10,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档