Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 当我添加C++;代码_Ios_Objective C_Xcode_Xcode5.1 - Fatal编程技术网

Ios 当我添加C++;代码

Ios 当我添加C++;代码,ios,objective-c,xcode,xcode5.1,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

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

<>代码错误的根本原因是<>代码> Read PnggIMAGE()/Cux>是C函数,但已经用C++链接编译了,这导致了一个“被损坏的”符号名称,其中包括函数的参数类型的信息。 解决方案是用
extern“C”
包装函数声明:


您添加的
.cpp
文件可能包含声明-可能形成预编译的头

这还不够。这些符号位于源文件中的何处?什么引用了他们?在发布问题之前,你有没有在谷歌上搜索错误消息?关于这方面的文章已经很多了。根据我的经验,我知道
.cpp
不编译,我习惯于将
.h
.cpp
文件合并到
.hpp
extern "C"
{
    void read_png_image(char const*, bool);
}