我正在尝试使用 GraphicsMagick 并遇到奇怪的构建错误,所以我添加#include <magick/magick.h>
到
#include <stdio.h>
int main(int argc, char *argv[]){
printf("hello magick");
return 0;
}
只是为了看到WTF正在发生。显然 hello_world 编译得很好。简单地添加 magick 标头会导致使用以下任何一种编译错误:
- 铿锵声或 gcc
-o test.o $(pkg-config --cflags --libs GraphicsMagick) test.c
- 铿锵声或 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 *);
黑尔先生(#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>
我很确定我的构建设置有问题。我没有成功找到有关 GraphicsMagick 对编译器/链接器选项的特定限制的文档。找到它可能会很好地解决问题。