COCOA 调用c库/c++库 (cocoa call to c library and c++ library)

本文介绍了如何在COCOA环境下调用C库和C++库。对于C库,可以直接包含头文件并调用函数。对于C++库,可以通过两种方式:一是将.m文件改为.mm文件,直接包含C++库头文件;二是将C++函数链接为C方式的符号,在COCOA的.m文件中调用。详细步骤和示例代码供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境xccode 3.1.4

(一) cocoa 调用 c库: cocoa 可以直接调用用BSD-C写的库的,头文件,c文件如下:

 // c 头文件

   /*
 *  test.h
 *  TestLib1
 *
 *  Created by chen kingli on 6/2/11.
 *  Copyright 2011 kingli. All rights reserved.
 *
 */


int Add(int a, int b);

 

////////////////////////////////////////

 // c 源文件

/*
 *  test.c
 *  TestLib1
 *
 *  Created by chen kingli on 6/2/11.
 *  Copyright 2011 kingli. All rights reserved.
 *
 */




#include "test.h"


int Add(int a, int b)
{
    //return a + b;
    return Add1(a, b);
}


//cocoa 中调用代码如下:

#include“test.h"

Add(a,b);  //这样即可


(二)cocoa 调用c++库,方法有两种:(1)改 cocoa *.m 文件为*.mm 文件, 然后再*.mm文件中包含c++库的头文件, 即可。 这根c++调用c++库没啥区别。

(2)将c++的函链接数符号编译为c方式的链接符号,再给cocao的*.m文件调用,代码如下:

// c++ 头文件

/*
 *  testlib.h
 *  TestLib1
 *
 *  Created by chen kingli on 6/2/11.
 *  Copyright 2011 kingli. All rights reserved.
 *
 */

#ifdef __cpuluspulus
extern "C"
{
#endif
    int Add1(int a, int b);
       
#ifdef __cpuluspulus   
}

#endif

 

//////////////////////////////////////////////////////////

 // c++ cpp文件

/*
 *  testlib.cpp
 *  TestLib1
 *
 *  Created by chen kingli on 6/2/11.
 *  Copyright 2011 kingli. All rights reserved.
 *
 */



#define __cpuluspulus  // 在bsd c库工程中,没有这个东西的定义,所以要在这加上

#include "testlib.h"

#ifdef __cpuluspulus
extern "C"
{
#endif
    int Add1(int a, int b)
    {
    return a + b;
    }

#ifdef __cpuluspulus   
}

#endif

 

总结:上面的两个文件可以在同一个工程中编译,可以直接在coca中调用,也可以在c++工程中调用,调用方式都是像调用c库那样。

c++ 工程需要:

extern "C"
{
    #include "test.h"
    #include "testlib.h"

}

 

// cocoa 中的调用代码

#include "testlib.h"


{

Add1(100,  100);

}

 

 // 有不明白的地方,可以留言 或email:---cx-kingli#163.com----。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值