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 則是表示這個是乙個靜態庫或者是乙個內部方法。通過上面的宣告,這個方法就可...