添加C ++代码时,Xcode iOS项目失败

时间:2014-07-07 11:01:41

标签: ios objective-c xcode xcode5.1

我有一个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)

1 个答案:

答案 0 :(得分:0)

错误的根本原因是read_png_image()是一个C函数,但是已经使用C ++链接进行编译 - 这导致了一个“错位”符号名称,其中包含有关函数参数类型的信息。 / p>

解决方案是使用extern "C"包装函数的声明:

extern "C"
{
    void read_png_image(char const*, bool);
} 

据推测,您添加的.cpp文件包含声明 - 可能形成预编译的标头。