zoukankan      html  css  js  c++  java
  • mac os下通过命令行的方式编译c++代码并在xcode里引用

    1编写c++类:

    c.h


    #include <stdio.h>

    class AA {

    public:

     void Go();

    };

    c.mm

    #include "c.h"

    AA::Go() {

    printf("AA::Go");

    }

    2编译刚刚写的类,分两 种运行环境,一种是在模拟器下运行,编译的目标代码架构为i386,一种是在真实iphone ipad里运行,目标代码架构为armv7,我们先编译可以在模拟器里运行的,要用模拟器的gcc编译器,打开命令行,键入命令:

    cd /program/code/

     /Developer/platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-g++-4.2 -arch i386 -c -I./  ./c.mm

    这样在源代码目录下会生成一个c.o文件,这就是我们需要的目标文件,如果要编译arm架构的,可用

    /Developer/platforms/ios.platform/Developer/usr/bin/llvm-g++-4.2 -arch i386 -c -I./  ./c.mm 

    3打开xcode,新建一个ios应用程序,弄好后点击项目名,选择build phases,然后选 择link binary with librarys,展开后点击+号, 浏览选择刚刚生成的c.o,编译然后运行就可以了,objective-c的调用代码如下,注意要将调用的objective-c的源代码文件的扩展名.m改为.mm以支持objective-c与c++的混编:

    -(void) viewDidLoad {

    [super viewDidLoad];

    AA *a = new AA();

    a->Go();

    delete a;

    }

     注:

    又试了一下,把llvm-g++-4.2改为g++-4.2也可以编译成功并运行良好,说明可以用gcc编译器编译好后再用llvm-gcc(XCODE使用的)编译器引用

    /Developer/platforms/ios.platform/Developer/usr/bin/g++-4.2 -arch i386 -c -I./  ./c.mm 

  • 相关阅读:
    C#遍历List并删除某个或者几个元素的方法
    7月清北学堂培训 Day 4
    7月清北学堂培训 Day 3
    7月清北学堂培训 Day 2
    7月清北学堂培训 Day 1
    P1383 高级打字机
    P2401 不等数列
    P1412 经营与开发
    P1314 聪明的质监员
    2019.7.9 校内测试 T3 15数码问题
  • 原文地址:https://www.cnblogs.com/yuanxiaoping_21cn_com/p/2513178.html
Copyright © 2011-2022 走看看