c++编写dll给unity使用的禁忌,小记

29 篇文章 0 订阅
2 篇文章 0 订阅

1.c++编写dll给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);

2.c++ 导出给unity的dll时,不要添加宏定义,如: LIBNDDATASDK_EXPORTS

3.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);//返回接口,使用上要注意线程安全

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值