開發庫常見問題

ios篇

1.unity導出xcode工程時,buildxx,避免真機調試的錯誤

2.有些framwork的導入需要編寫代碼自動導入,或者 寫pod文件,podfile,切換到相應目錄,pod install

 

c++篇

1. 所有的庫需要編寫的vs版本一致,否則報錯

2. 運行庫也要一致都是 md

3. 注意包含頭文件

4.注意鏈接器的lib要寫

5.注意鏈接器的地址要對

6.dll導出和lib導出有差異

#ifdef LIBNDDATASDK_EXPORTS

#define NDDATASDK_API extern"C" _declspec( dllexport )

#else

#define NDDATASDK_API extern"C" _declspec(dllimport)

#endif

 

NDDATASDK_API int CreateDll1New(int a,int b);//返回接口,使用上要注意線程安全

 

而lib導出:

int CreateDll1New(int a,int b);//返回接口,使用上要注意線程安全

 

一定不能添加NDDATASDK_API ,否則報錯

7.c++編寫給unity使用的禁忌; 返回值不能是字符串,char*,獲取其它的, 這樣會搞死unity的內存。

正常寫法:

.h文件

#ifdef DLL1_EXPORTS

#define NDDATASDK_API extern"C" _declspec( dllexport )

#else

#define NDDATASDK_API extern"C" _declspec(dllimport)

#endif

NDDATASDK_API void necall(char* str, char* outdata);//返回接口,使用上要注意線程安全

.app文件

void necall(char* str1, char* outdata) {

string str = str1;

mondebug(str);

mondebug(str.data());

const char* output1 = str.data();

strcpy(outdata, output1);

}

 

c#文件

[DllImport("dll1")]

private static extern void necall(string a,StringBuilder b);

 

調用方法

StringBuilder b = new StringBuilder();

necall("dsadsdsds", b);

Debug.LogError("########22222###### " +b);

 

--》c++ 導出給unity的dll時,不要添加宏定義 LIBNDDATASDK_EXPORTS

安卓篇:

1.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章