c - 使用 GraphicsMagick C API,未知类型图像编译错误

标签 c gcc compiler-errors clang graphicsmagick

我正在尝试使用 GraphicsMagick 并遇到奇怪的构建错误,因此我添加了 #include <magick/magick.h>

#include <stdio.h>
int main(int argc, char *argv[]){
    printf("hello magick");
    return 0;
}

只是为了看看到底发生了什么。显然 hello_world 编译得很好。简单地添加 magick header 会导致使用以下任何项进行编译时出现大量错误:

  • clang 或 gcc -o test.o $(pkg-config --cflags --libs GraphicsMagick) test.c
  • clang 或 gcc -o test.o $(GraphicsMagick-config --cflags --libs) test.c

来自叮当:

zsh/2 1791 % clang -o test.o $(pkg-config --cflags --libs GraphicsMagick) test.c
In file included from test.c:2:
/usr/include/GraphicsMagick/magick/magick.h:19:9: error: unknown type name 'Image'
typedef Image
        ^
/usr/include/GraphicsMagick/magick/magick.h:20:28: error: unknown type name 'ImageInfo'
  *(*DecoderHandler)(const ImageInfo *,ExceptionInfo *);
<小时/>

Hale 先生(#1)建议的解决方案非常适合测试。在实际项目中尝试; gcc 吐出数千行错误,例如:

/usr/lib/gcc/x86_64-unknown-linux-gnu/4.8.1/include/f16cintrin.h: In function ‘__m128i mm256_cvtps_ph(__m256, int)’: /usr/lib/gcc/x86_64-unknown-linux-gnu/4.8.1/include/f16cintrin.h:73:66: error: cannot convert ‘__m256 {aka float}’ to ‘__vector(8) float’ for argument ‘1’ to ‘__vector(8) short int __builtin_ia32_vcvtps2ph256(__vector(8) float, int)’ return (__m128i) __builtin_ia32_vcvtps2ph256 ((__v8sf) __A, __I);

由于项目成功构建以及上述内容的唯一变化是取消注释以下一项或两项:

#include <magick/api.h>
#include <magick/magick.h>

我很确定我的build设置有问题。我没有成功找到有关 GraphicsMagick 对编译器/链接器选项设置哪些特定限制的文档。找到这一点很可能解决问题。

最佳答案

使用<magick/api.h> header ;这可以确保类型和前向声明以正确的顺序出现。

关于c - 使用 GraphicsMagick C API,未知类型图像编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19036440/

相关文章:

c++ - 使用 GCC 编译非必要的目标文件

c++ - Dev C++中的编译错误错误

c - 为什么 glibc 中 x86 的读写屏障不使用 __volatile asm?

java - 函数需要在 if、else if、else 时为 void? HashMap ,java

c++ - 尝试使用可变参数编译代码时出错

c - 目标在 Makefile 中的作用是什么?

创建 DNS 响应消息

c - 比 if-else if 更好的解决方案?

arrays - 动态加倍数组

gcc - 相当于 gcc 编译器的 pgcc "-Minfo="标志?