致命错误 C1189:#error:core.hpp 标头必须编译为 C++

Posted

技术标签:

【中文标题】致命错误 C1189:#error:core.hpp 标头必须编译为 C++【英文标题】:fatal error C1189: #error : core.hpp header must be compiled as C++ 【发布时间】:2016-05-26 09:50:27 【问题描述】:

我正在构建一个使用 OpenCV 的 C 应用程序。

编译时出现如下错误:

fatal error C1189: #error :  core.hpp header must be compiled as C++

我没有找到解决此错误的方法。

如何在 C 项目中使用 OpenCV?

【问题讨论】:

编译器告诉你不能用c编译器编译c++源代码.. ... 但是 OpenCV 具有纯 C 绑定。所以你需要调整你的构建过程来使用那些 如何使用visual studio将其更改为c++编译器,我试过了,但我不能。 你必须在 C 中构建你的 OpenCV 源代码,你正在使用的东西是用 C++ 编译的,你正在使用 C 我不是 VS 专家,但this is the first googled link 【参考方案1】:
    选择所需文件。 启动其属性窗口 转到 C/C++ -> 高级,并将 编译为 更改为 编译为 C++ 代码 (/TP)

【讨论】:

谢谢,+1。非常有用。【参考方案2】:

我不确定这会有多大帮助,但最近我在尝试编译“darknet”开源工具时遇到了类似的问题。源代码包含来自 OpenCV 的头文件,但需要使用 C 编译器而不是 C++ 编译。

代码使用以下标题,我刚刚更改了标题名称: 而不是:

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"

使用以下内容:

#include "opencv2/highgui/highgui_c.h"
#include "opencv2/imgproc/imgproc_c.h"

【讨论】:

是的,我做到了。但我只使用 CPU 版本(未启用 GPU)。 从C++文件中调用Darknet的代码成功了吗? 不,我还没有尝试在另一个程序中使用它,我只是编译它并在终端中通过命令行运行。但我不认为如果它在命令行中工作,那么它不会在 C++ 代码中工作。如果你愿意,你可以把你的代码发给我,我可以在我的机器上试一试,如果同样的问题会出现,我会告诉你。

以上是关于致命错误 C1189:#error:core.hpp 标头必须编译为 C++的主要内容,如果未能解决你的问题,请参考以下文章

错误:xkeycheck.h(179):警告 C4005:'char16_t':宏重新定义” |致命错误 C1189

error C1189: #error : "No Target Architecture"

C++ Visual Studio 编译错误

Visual Studio 2008 错误:ATL

VC6的工程转到VC2010或更高版本出现fatal error C1189编译错误的解决方法

在VC2015下编译DOOM3时发现出错fatal error C1189: #error