2013-10-23 80 views
5

使用我现在要移植的C++代码到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应用一个新的项目,然后设置链接库文件,也包括相应的“谈话.h“头文件。 但是,即使我成功构建库,头文件上也会发生一些错误。

的错误表明

  1. “的iostream” 找不到文件
  2. “未知类型名称 '阶级';?你的意思是 '类'
  3. 任何其他错误...

我已经尝试将controller.m重命名为controller.mm,但它没有解决问题

如何导入头文件f在iOS上使用库编写C++吗? 由于

回答

0

对于第一部分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; 
    } 

$克++ functionOverLoading.cpp - o functionOverLoading

$ ./functionOverLoading

+0

但我想要的是从C++代码构建一个库,然后使用iOS上的库,它需要加载库并在iOS项目中包含开放接口头。不能在Xcode中运行普通的C++代码 –

0

您需要添加C++标准库。

为此,请在您的项目中找到其他链接器标志并添加-lstdc++

+0

如何添加?以及在哪里添加? –

2

一个大致的轮廓:

在Xcode中(从模板的iOS应用程序项目的任何一个(或现有的):

  • 创建一个新的静态库的目标文件 - >新建 - >目标....选择框架或库,然后可可触摸静态库
  • 添加库源代码:将库源代码拖放到Xcode项目中。在出现的对话框中,选择上面创建的构建目标。
  • 将项目依赖项添加到库中:从项目导航中选择项目,即项目导航中的iOS构建目标。选择构建阶段选项卡,然后根据目标依赖项在窗口中,点击+标志。一张表打开(选择项目添加),图书馆的目标应该在列表的顶部。
  • 在iOS中包含库目标:在链接二进制文件与库,请单击+。库(a .a文件)应该位于列表的顶部。
  • 链接libC++:作为上述步骤。从列表中选择libC++
  • 启用目标C++编译为需要通过从.M改变扩展.mm
  • 构建iPhone应用程序对象以包括库头任何源代码文件。

Xcode将负责为您设置一切,包括编译器标志和头部搜索路径。