环境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----。