我有一个OpenGL Xcode项目,但是当我想添加.h
和.cpp
文件时,它不会编译,即使我告诉不要编译这些文件。
我收到此错误:
Apple Mach-O linker error
Undefined symbols for architecture i386:
"_read_png_image", referenced from:
read_png_texture(char const*, bool) in TextureUtilities.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
答案 0 :(得分:0)
错误的根本原因是read_png_image()
是一个C函数,但是已经使用C ++链接进行编译 - 这导致了一个“错位”符号名称,其中包含有关函数参数类型的信息。 / p>
解决方案是使用extern "C"
包装函数的声明:
extern "C"
{
void read_png_image(char const*, bool);
}
据推测,您添加的.cpp
文件包含声明 - 可能形成预编译的标头。