使用 OpenCV 库和 Makefile 的 C 编译程序

标签 c opencv makefile linker-errors

嗨,我有一个项目在 CLion使用OpenCV库用C语言编写。 我已将其配置为 CMake它编译和运行得很好。但我也有自己的Makefile在目录中,现在我想添加到此 Makefile 对 OpenCV 库的支持

以下是我添加到此 Makefile 中的行:

# libraries
# OpenCV
OPENCV_CFLAGS = `pkg-config —-cflags opencv` 
OPENCV_LIBS = `pkg-config —-libs opencv`

然后:

$(TARGET): main.c $(LIBRARY) $(TEST_SOURCE_FILES)
    $(CC) $(CFLAGS) -o $(TARGET) main.c $(LIBRARY) $(TEST_SOURCE_FILES) $(UNIT_TESTS_LIBRARY) $(OPENCV_LIBS) $(OPENCV_CFLAGS)

当我在做make -f make.txt时它无法编译,问题是:

fatal error: 'cv.h' file not found
#include <cv.h>

我也尝试使用这个:

# include headers 
CFLAGS += -I/usr/local/include/opencv

但是尽管已经找到了 cv.g,但还有另一个错误:

/usr/local/include/opencv/cv.h:63:10: fatal error: 'opencv2/core/core_c.h' file not found
#include "opencv2/core/core_c.h"

不,我将其更改为:

# include headers 
CFLAGS += -I/usr/local/include

还有#include<cv.h>#include<opencv/cv.h>不,没有关于找不到头文件的错误消息,但有一些链接问题,如下所示:

Undefined symbols for architecture x86_64:
  "_cvCreateImage", referenced from:

最佳答案

好的,我已经解决了我在 Makefile 中创建的问题:

# include headers
# CFLAGS += -I/usr/local/include

# libraries
# OpenCV
OPENCV_LIBS = `pkg-config --cflags --libs opencv`

编译目标时的情况:

$(TARGET): main.c $(LIBRARY) $(TEST_SOURCE_FILES)
    $(CC) $(CFLAGS) -o $(TARGET) main.c $(LIBRARY) $(TEST_SOURCE_FILES) $(UNIT_TESTS_LIBRARY) $(OPENCV_LIBS)

关于使用 OpenCV 库和 Makefile 的 C 编译程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39931235/

相关文章:

python - OpenCV 多色阈值处理

c++ - 无法在 make 文件中包含库

makefile - 基于 Windows 的 make 工具的推荐

javascript - Haar.js 将 open cv xml 转换为 javascript

c++ - OpenCV - 将曲线拟合到一组点

ubuntu - 如何在不重新编译任何未更改的文件的情况下重建 Ubuntu 内核源代码?

C 编程 - 分解金钱

使用 pthreads 在 C 中将顺序循环转换为并行循环

java - C++ JNI UnsatisfiedLinkError

c - 如何将多个 *argv 组合成一个 char* 类型的消息