前言: 有时侯需要使用c++的一些代码库,这里先讲一下Xcode 建C++ 工程,并将代码编译成.a库,提供给demo使用。这里只是简单的介绍,以后会继续介绍如何将公开的C/C++源码编译成OC使用的静态库.a。
第一步 准备
a. Xcode 新建一个 c++ 工程 CPPtest(macoOS 平台下)
选择C++
b. 新建一个类 world

world.hpp 代码
<code>//
// Created by lzz on 2019/5/5.
#ifndef world_hpp
#define world_hpp
#include <stdio.h>
class TestA
{
public: TestA(){};
virtual ~TestA(){};
virtual void test(const char *str);
virtual void helloWorld();
};
#endif /* world_hpp */
</code>
world.cpp 代码
<code>//
// Created by lzz on 2019/5/5.
#include "world.hpp"
void TestA::helloWorld()
{
printf("==== helloWorld,I'm test lib ==== n");
}
void TestA::test(const char *str)
{
printf("==== say:%s in lib ==== n",str);
}
</code>
c. main.cpp 中调用
<code>//
// Created by lzz on 2019/5/5.
#include <iostream>
#include "world.hpp"
int main(int argc, const char * argv[]) {
// insert code here...
std::cout << "Hello, World!n";
// 方式一:箭头
TestA *aaa = new TestA();
aaa->helloWorld();
aaa->test("aaa");
// 方式二;打点
TestA bbb = TestA();
bbb.helloWorld();
bbb.test("bbb");
return 0;
}
</code>
run 通过即可。
第二步:编译
终端:cd 文件所在的目录

** a, 编译成.o 指定x86_64架构 **
<code>clang++ -arch x86_64 -g -o world.o world.cpp -c </code>
** b, 打包成.a库 **
<code>ar -r libworld.a world.o </code>

** c, 查看.a库支持架构 **
<code>lipo -info libworld.a </code>
结果:Non-fat file: libworld.a is architecture: x86_64
第三步:导入demo 使用
-
#warning 把引用c++库的 .m 改成.mm 即可编译,否则总是报错 不支持_86_64
-
将.a 和 world.hpp 导入demo工程中,使用和在main.cpp 使用一样。

-
运行成功输出。
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!