2009年7月20日 星期一

C/C++呼叫ObjectiveC程式

前面的一篇文章裡提到如何在ObjectiveC程式裡呼叫C/C++程式的方法,現在反過來要在C/C++程式裡呼叫ObjectiveC的程式,要如何作?方法也同樣也很簡單,關鍵點就在於二者之間的程式介面必需是C的介面,也就是說在ObjectiveC這邊可以寫個C函式讓C/C++的程式直接呼叫。

舉一個簡單的例子,現在要用ObjectiveC寫個函式,這個函式可以讓C/C++碼呼叫取得目前app的完整路徑字串。
// 取得app路徑字串,複製字串至一buffer
// pBuff buffer
// szBuff buffer的大小,字元數
// 回傳實際複製的字元數
int objcGetAppPath(char* pBuf, int szBuff)
{
char* ppath = [[[NSBundle mainBundle] bundlePath] UTF8String];
...
}
在C/C++裡面就可以直接呼叫使用這個函式了。

這裡有一點要特別提出來,在C++中使用objcGetAppPath時有個地方要注意一下,就是宣告時需要使用extern "C"修飾,這樣才不會被當作是C++的函式而最後發生連結錯誤。
extern "C" {
int objcGetAppPath(char* pBuf, int szBuff);
}

沒有留言:

張貼留言

Related Posts Plugin for WordPress, Blogger...