gpt4 book ai didi

c++ - 使用已在另一个已用库中定义的函数名称的库

转载 作者:太空宇宙 更新时间:2023-11-03 21:58:11 25 4
gpt4 key购买 nike

我正在使用 Qt 和 OpenCV 3.0 使用 C++ 开发一个项目。尝试使用OpenCV的人脸识别模块时出现错误。

访问文件predict_collector.hpp和下面的类时

class CV_EXPORTS_W PredictCollector {
protected:
...
public:
...
CV_WRAP virtual bool emit(const int label, const double dist, const int state = 0);
};

编译器将 emit 关键字与其在 Qt 中的定义链接起来,生成此错误:

\libs\opencv3.0.0\opencv_contrib-master\modules\face\include\opencv2\face/predict_collector.hpp(77): error C2059: syntax error: 'const'

因为 'const' 是 C++ 中的关键字,不能将参数传递给 Qt emit 函数。您会看到编译器将 emit 视为 Qt 版本。

注意 emit 是一个宏函数,它不是一个普通的函数,所以我们不能使用命名空间,你可以在 qobjectsdef.h 中看到:

#ifndef QT_NO_EMIT
# define emit
#endif

我试过

#undef emit 

在文件 predict_collector.hpp 中,但它会在所有项目中产生错误。

如何解决这个问题?

最佳答案

在您的代码中使用命名空间调用。这允许您编写 namespace1::functionX()namespace2::functionX().

在不可能的地方尝试添加

namespace namespace1{
//code here
}

using namespace
//Code here//

如果在您自己的代码中使用这些不能修复错误,那么可以将其添加到相关的 OpenCV 和 Qt 文件中。

关于c++ - 使用已在另一个已用库中定义的函数名称的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34766441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com