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.