Unity3D中C 呼叫iOS的靜態庫 a

2021-07-13 20:59:00 字數 984 閱讀 8777

c#呼叫其他模組的介面都是通過dllimport的方式來實現的。

首先匯入名字空間

using system.runtime.interopservices;
宣告需要使用的c介面

[dllimport("__internal")]
[dllimport("__internal")]

private static extern void __setversion (string version);

在ios的工程中定義相應的c介面,並匯出

#ifdef __cplusplus

extern "c"

#endif

注意:unity呼叫xcode封裝的函式,宣告時需要用extern "c";

但在實際的使用過程中,遇到乙個奇怪的問題:

在oc sdk中,定義了乙個 

__setusetestaddr()介面

u3d工程中使用如下:

但在unity3d工具中執行的時候,總是提示找不到方法的錯誤

如果直接build成xcode工程,又能正常執行。

經過查詢資料,以及請教同事,終於發現問題的所在,需要新增乙個真機平台的判斷,因為呼叫的是ios的靜態庫,必須在iphone環境下才能執行,直接在u3d工具中跑是不行的

#if unity_iphone || unity_ios

__setusetestaddr(true);

}#endif

Unity3D中C 呼叫iOS的靜態庫 a

c 端的處理 c 呼叫其他模組的介面都是通過dllimport的方式來實現的。首先匯入名字空間 using system.runtime.interopservices 宣告需要使用的c介面 dllimport internal private static extern void setversi...

Unity3D 呼叫外部程式

unity3d 呼叫外部程式 1 呼叫外部瀏覽器 void ongui 2 呼叫外部exe void ongui unity3d 動態讀取外部檔案 分兩種情況 1,載入封裝好的內部檔案。var aaa material 空材質 var bbb gameobject 要繫結材質的模型 function...

Unity3d與iOS之間的相互呼叫

u3d呼叫ios 1.1實現原理 ios開發使用的語言是objective c 也稱object c u3d中使用dllimport的attribute,以非託管方式將庫中 的方法匯出到c 中進行使用。而傳入 internal 則是表示這個是乙個靜態庫或者是乙個內部方法。通過上面的宣告,這個方法就可...