Ios 当我添加C++;代码
我有一个OpenGL Xcode项目,但当我想添加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
.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);
}