如何构建由C++编写并在iOS中使用的库
How to build library written by C++ and use in iOS
我现在必须将C++代码移植到 iOS,尝试通过原始C++代码构建静态库并在 iOS 上加载库。由于原始代码很繁重,所以我开始了一个小测试来验证我的步骤是否有效。
首先,我需要构建库(.a),它打印一些字符串。我编译以下代码并生成一个库(.a)文件
//talk.h
...
#include <iostream>
class Talk {
Talk();
void printHello();
void printWord(char*);
};
//talk.cpp
#include "talk.h"
using namespace std;
void Talk::printHello() {
cout << "Hello World";
}
void Talk::printWord(char* word) {
cout << "Hello" << word;
}
我尝试做的第二步是为iOS应用程序打开一个新项目,然后设置指向库文件的链接,还包括相应的"talk.h"头文件。但是,即使我成功构建库,头文件上也会发生一些错误。
这些错误表明
- 未找到"iostream"文件
- "未知类型名称'类';你是说"阶级"吗?
- 任何其他错误...
我尝试将controller.m重命名为 controller.mm,但它不能解决问题
如何导入用C++编写的头文件以便在iOS上使用库?谢谢
粗略的大纲:
在 Xcode 中(从其中一个模板 iOS 应用程序项目(或现有项目)开始):
- 创建一个新的静态库目标:文件 -> 新建 -> 目标...。选择"框架"或"库",然后选择"Cocoa Touch 静态库" 添加资源库源代码
- :将资源库源代码拖到 Xcode 项目中。 在出现的对话框中,选择上面创建的生成目标。
- 将项目依赖项添加到库:在"项目导航"中选择"项目",即"目标"中的 iOS 生成目标。选择"生成阶段"选项卡,然后在窗口中的"目标依赖项"下,单击 + 号。将打开一个工作表(选择要添加的项目),库目标应位于列表顶部。
- 在 iOS 目标中包含库:在"将二进制文件与库链接"下,单击 +。库(.a 文件)应位于列表顶部。
- 与libc ++链接:如上述步骤。从列表中选择 libc++。
- 通过将扩展名从 .m 更改为 .mm 来为需要包含库标头的任何源代码文件启用 Objective-C++ 编译
- 生成 iOS 应用程序目标。
Xcode 将负责为您设置其他所有内容,包括编译器标志和标头搜索路径。
对于第一部分,C++与 Xcode 编译得很好我写了一个简单的教程http://tutorialsios.blogspot.com/2013/09/c-beginers-code-for-objective-c.html这些代码是使用 Xcode 编写并在终端中编译的
#include "functionOverLoading.h"
int main(int argc, const char * argv[]) {
..
..
return 0;
}
$g++ 函数重载.cpp –o 函数重载
$ ./函数重载
您需要
添加C++标准库。
为此,请在项目中查找"其他链接器标志"并添加-lstdc++
。
相关文章:
- "string.h"在构建适用于iOS的qt应用程序中找不到消息
- 在为 iOS 构建 aws-sdk-cpp 时,cmake 上的 CXX 编译器错误已损坏
- 在 iOS 上使用 Aruco 构建 OpenCV 时"Functional-style cast from id to double is not allowed"
- 构建适用于 iOS 的 ICU
- Siphon为iOS模拟器构建,但为设备构建获得链接错误
- 如何构建 Caffe 框架 XCode 6.2,iOS 8.3 环境
- 使用 libsodium 为 iOS 构建 zeromq,随机字节错误
- 如何构建使用 OpenCV 的 XCode 6 iOS 应用程序 - 未定义错误__cplusplus
- 如何构建由C++编写并在iOS中使用的库
- 使用在ios上运行的qt应用程序构建提升
- IOS 构建包含 IDA 中可见的符号
- 在cocos2d-x中使用cmake为iOS和Android项目构建外部库
- iOS静态库使用Scons链接器在错误的平台上搜索构建
- 使用iOS版的iconv构建Boost.Locare
- 在成功构建iOS后没有libclang.a
- 通过CMake构建的ios上Qt应用程序的运行时错误
- 如何在iOS模拟器上执行任意预构建的二进制文件
- 在为iOS构建时,XCode认为c++文件是C
- arm7 / iOS 4.3的pjsip构建-在mips_test.o中找不到符号
- OpenCV for iOS构建错误