Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何构建C++编写的库及其在iOS中的应用

如何构建C++编写的库及其在iOS中的应用
EN

Stack Overflow用户
提问于 2013-10-22 18:16:53
回答 3查看 9.2K关注 0票数 6

现在,我不得不将C++代码移植到iOS,尝试通过原始C++代码构建静态库,并在iOS上加载库。因为原始代码很重,所以我启动了一个小测试来验证我的步骤是否有效。

首先,我需要构建库(.a),它打印一些字符串。我编译了以下代码并生成一个库(.a)文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//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“头文件。但是,即使我成功地构建了库,头文件也会出现一些错误。

这些错误表明

  1. "iostream“文件未找到
  2. “不知道类型的名字'Class‘,你是说’类‘吗?
  3. 任何其他错误..。

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

如何导入用C++编写的头文件,以便在iOS上使用库?谢谢

EN

回答 3

Stack Overflow用户

发布于 2015-03-20 14:09:04

大致轮廓:

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

  • 创建一个新的静态库目标:文件->新->目标.选择框架或库,然后Cocoa触摸静态库
  • 添加库源代码:将库源代码拖到Xcode项目中。在出现的对话框中,选择上面创建的构建目标。
  • 将项目依赖项添加到库中:在项目导航中选择项目,这是来自目标的iOS构建目标。选择“构建阶段”选项卡,然后在目标依赖项下的窗口中单击+标志。打开工作表(选择要添加的项),库目标应位于列表的首位。
  • 在iOS目标中包括库:在链接二进制与库下,单击+。库(一个.a文件)应该位于列表的首位。
  • 链接到libc++:作为上面的步骤。从列表中选择libc++。
  • 为任何需要包含库头的源代码文件启用目标-C++编译,方法是将扩展名从.m更改为.mm
  • 构建iOS应用程序目标。

Xcode将负责为您设置所有其他内容,包括编译器标志和头搜索路径。

票数 4
EN

Stack Overflow用户

发布于 2013-10-22 18:42:28

对于第1部分,C++编译得很好,我编写了一个简单的教程,http://tutorialsios.blogspot.com/2013/09/c-beginers-code-for-objective-c.html,这些代码是用Xcode编写的,并在终端中编译

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include "functionOverLoading.h"
int main(int argc, const char * argv[]) {
..
..
       return 0;
    }

$g++ functionOverLoading.cpp -o functionOverLoading $ ./functionOverLoading

票数 0
EN

Stack Overflow用户

发布于 2013-10-22 18:59:24

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

要做到这一点,请在项目中找到其他链接标记并添加-lstdc++

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19531612

复制
相关文章
如何在系统中添加字体(添加字体到系统)
笔者最近在使用win10自带的OneNote笔记本记笔记的时候,发现笔者电脑中没有华文新魏这个字体,最开始以为是OneNote不带有这个字体,经过一段时间的收集资料后发现,是笔者电脑win10系统中不带有这个字体,现将有关概念和字体安装方法做一下记录。
全栈程序员站长
2022/08/01
4K0
如何在系统中添加字体(添加字体到系统)
winfrom如何在listview中添加控件
private Button btn = new Button(); private void Form1_Load(object sender, EventArgs e) { ListViewItem[] lvs = new ListViewItem[3]; lvs[0] = new ListViewItem(new string[] { "行1列1", "行1列2", "" }); l
码农阿宇
2018/04/18
2.6K0
如何在Hue中添加Spark Notebook
CDH集群中可以使用Hue访问Hive、Impala、HBase、Solr等,在Hue3.8版本后也提供了Notebook组件(支持R、Scala及python语言),但在CDH中Hue默认是没有启用Spark的Notebook,使用Notebook运行Spark代码则依赖Livy服务。在前面Fayson也介绍了《Livy,基于Apache Spark的开源REST服务,加入Cloudera Labs》、《如何编译Livy并在非Kerberos环境的CDH集群中安装》、《如何通过Livy的RESTful API接口向非Kerberos环境的CDH集群提交作业》、《如何在Kerberos环境的CDH集群部署Livy》、《如何通过Livy的RESTful API接口向Kerberos环境的CDH集群提交作业》、《如何打包Livy和Zeppelin的Parcel包》和《如何在CM中使用Parcel包部署Livy及验证》,本篇文章Fayson主要介绍如何在Hue中添加Notebook组件并集成Spark。
Fayson
2018/11/16
6.8K1
7.如何在OpenLDAP中实现将一个用户添加到多个组
在前面的文章Fayson讲了《1.如何在CentOS6.5安装OpenLDAP并配置客户端》、《2.OpenLDAP集成SSH登录并使用SSSD同步用户》、《3.如何实现OpenLDAP的主主同步》、《4. 如何为Hive配置OpenLDAP认证》、《5.如何为Impala配置OpenLDAP认证》以及《6.如何为Hue配置OpenLDAP认证》。本篇文章主要介绍如何在OpenLDAP中将一个用户添加到多个组中。
Fayson
2018/03/29
4.8K0
如何在 wxPython 中创建多个工具栏
作为C++库wxWidgets的包装器,wxPython允许Python开发人员利用这个成熟且经过实战测试的框架的强大功能。它具有各种平台的本机外观和感觉,包括Windows,macOS和Linux。使用 wxPython,您可以使用各种小部件(例如按钮、文本控件,当然还有工具栏)设计具有视觉吸引力且响应迅速的桌面应用程序。
很酷的站长
2023/08/11
3100
如何在 wxPython 中创建多个工具栏
如何在Ansible中复制多个文件和目录
Ansible 通过 copy 和 fetch 模块提供了基本的复制文件和目录的功能.
东风微鸣
2022/04/21
17.4K2
如何在Ansible中复制多个文件和目录
如何在ModelSim中添加Xilinx仿真库
今天给大侠带来在FPGA设计应用中如何在ModelSim中添加Xilinx仿真库,话不多说,上货。
FPGA技术江湖
2020/12/30
5.3K1
如何在Vue中动态添加类名
能够向组件添加动态类名是非常强大的功能。它使我们可以更轻松地编写自定义主题,根据组件的状态添加类,还可以编写依赖于样式的组件的不同变体。
前端小智@大迁世界
2020/05/12
6.2K0
如何在README.md文件中添加图片
1、在github上的仓库建立一个存放图片的文件夹,文件夹名字随意。如:img-folder
挥刀北上
2021/03/10
6.1K0
如何在README.md文件中添加图片
条码软件中如何在边框上添加文字
很多用户在使用条码标签软件设计制作标签时,会有自己的一些个性化的需要,虽然条码软件不能和作图软件相比,但是很多效果还是可以通过一些小技巧来实现的。比如下面要给大家介绍的把文字压在边框上的效果。如下图所示。
神奇像素科技
2022/03/01
2.7K0
条码软件中如何在边框上添加文字
如何在 TypeScript 中为对象动态添加属性?
在 TypeScript 中,我们经常需要在运行时动态添加属性到对象上。这是因为 TypeScript 是一种静态类型语言,类型系统在编译时会检查代码的类型安全性,所以在编译时我们无法确定对象上将要添加哪些属性。在本文中,我们将讨论如何在 TypeScript 中为对象动态添加属性,以及这样做的一些注意事项。
网络技术联盟站
2023/06/07
11.8K0
如何在Eclipse中添加Tomcat的jar包
右键项目工程,点击Java Build Path 点击Add Library,选择Server Runtime 选择Tomcat版本 此时就看到拥有了Tomcat的jar包了
用户1154259
2018/01/17
2.8K0
如何在Eclipse中添加Tomcat的jar包
如何在WordPress中添加图片放大预览效果
这里分享一个如何在Wordpress中开启点击图片预览的功能。操作也非常的简单,只需要把下面的内容黏贴到对应的文件中即可。实际的效果预览
兔云小新LM
2023/09/11
3850
如何在WordPress中添加图片放大预览效果
gRPC: 如何在 gRPC 服务中自动添加 RequestId?
本文将介绍如何在 gRPC 微服务中,为每一个 API 自动添加 RequestId 。
尹东勋
2021/10/17
2.6K0
gRPC: 如何在 gRPC 服务中自动添加 RequestId?
在CentOS(Linux)中添加单个IP和批量添加多个IP地方法
在/etc/sysconfig/network- s/中新建文件ifcfg-eth0:*,*为数字序号,多个IP则依次增大 以0为例,建立文件ifcfg-eth0:0
雾海梦曦
2022/11/14
3.7K0
在CentOS(Linux)中添加单个IP和批量添加多个IP地方法
1、普通方法: 在/etc/sysconfig/network- s/中新建文件ifcfg-eth0-range0
Inkedus
2020/04/16
4.6K0
如何在前端应用中合并多个 Excel 工作簿
SpreadJS是纯前端的电子表格控件,可以轻松加载 Excel 工作簿中的数据并将它们呈现在前端浏览器应用的网页上。
葡萄城控件
2023/10/11
2930
如何在前端应用中合并多个 Excel 工作簿
点击加载更多

相似问题

Excel:创建新行并进行内插

27

插入缺失数据的行并进行内插

30

AngularJS将数组内插到字符串内指令

10

Rails -将变量传递给字符串内插

34

内插内插字符串中的格式字符串

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文