[Unity3d] 在Unity中使用c++ dll

本文介绍了在Unity5.2.3f1 64位环境下,如何克服困难调用C++编译的DLL。由于特殊需求,作者详细描述了创建DLL的步骤,包括设置VS2013为64位编译,解决Unity编辑器报错的问题,并提供了当必须使用32位DLL时的应对策略。
摘要由CSDN通过智能技术生成


unity版本5.2.3f1,64bit

vs版本2013

虽然在unity中用c#写dll更方便,在结构和数据类型上也犯不着再蛋疼。但出于某些特殊的原因,我必须挑战下调用c++写的dll。

这里我用dll基本就是为了外部的进程能调用unity的输出数据。

.h基本结构:

#ifndef _XX_DLL_H
#define _XX_DLL_H
#endif 
#include <stdio.h>

#if defined (EXPORTBUILD)  
# define _DLLExport __declspec (dllexport)  
# else  
# define _DLLExport __declspec (dllimport)  
#endif  

extern "C" {//在exter "C"中暴露接口

	typedef struct	{
		int x;
                int y;
                int z;
	}Data;
	void _DLLExport add(Data data);//unity输入数据接口
	Data _DLLExport get();//外部进程获得数据的接口
}
//下面一段是将dll的执行进程中数据定义为共享属性,否则当外部进程调用时会先将数据复制,就不能同步双方的数据了
#pragma data_seg("ShareSec")  
Data data= {0,0,0};//把data放入ShareSec段  
#pragma data_seg()  
#pragma comment(linker,"/SECTION:ShareSec,RWS")//为ShareSec段添加共享段读写属性 


用vs编译,将编译后的dll文件放到 Assets中Plugins里

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值