Xcode iOS 项目在我添加 C++ 代码时失败
Posted
技术标签:
【中文标题】Xcode iOS 项目在我添加 C++ 代码时失败【英文标题】:Xcode iOS Project Fails When I Add C++ Code 【发布时间】:2014-07-07 11:01:41 【问题描述】:我有一个 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)
【问题讨论】:
信息不够。这些符号位于源文件中的什么位置?什么引用了它们? 您在发布问题之前是否在 Google 上搜索过错误消息?这方面的文章已经很多了。 根据我的经验,我了解到.cpp
不能编译,我习惯于将.h
和.cpp
文件合并到.hpp
。
【参考方案1】:
错误的根本原因是read_png_image()
是一个 C 函数,但已使用 C++ 链接进行编译 - 这会导致包含有关函数参数类型的信息的“错位”符号名称。
解决办法是用extern "C"
包装函数的声明:
extern "C"
void read_png_image(char const*, bool);
您添加的.cpp
文件可能包含声明 - 可能形成一个预编译的标头。
【讨论】:
以上是关于Xcode iOS 项目在我添加 C++ 代码时失败的主要内容,如果未能解决你的问题,请参考以下文章
将第三方框架添加到 iOS 应用中的 Xcode 子项目或主项目
IOS如何在目标c中将AFNetworking添加到我的xcode项目中
XCode - iOS - <OCMock/OCMock.h> 文件未找到