VC++封装DLL过程,导入Unity中调用

 

      不知不觉就这样注册属于一个自己的博客园,用来记录和分享自己工作、学习过程中遇到的问题、解决方案以及心得。 这是我的第一篇博客,嗯,下手写这一篇博客时,

感觉被按下地上,摩擦摩擦,然后再摩擦,感谢博客园带走我的第一次。  哈哈哈。 我是由法学专业转行到U3D程序开发,工作也是一年多了,但是菜鸟一枚,希望大佬多多指教。

 

      既然今天决定要写一篇博客,那就记录一下之前在工作中遇到的问题---------封装VC++ DLL导入U3D中调用,C++又回调C#函数。

 

一、VC++ DLL导出步骤

按部就班,第一步先在头文件添加

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

 

*要导出的函数添加 关键字_DLLExport,头文件所导出的函数必须与实现的函数参数相对应,具体实现函数中因为带有一个带有参数的回调函数*getPos(float,float),所以在头文件

中typedef  void(*GetPos)(float, float)也是一种固定写法。

image

 

*具体实现函数的声明,因为C++没有学习过,用C#写法去写了。不知道这样的写法有没有错误,由于时间关系,所以并没有深入其中,如果大神能看到这里,希望大神指教指教

image

 

 

*点击项目属性,配置类型—动态库

image

 

 

*在输出目录中能看到生成DLL文件的目录

image

 

 

二、U3D 中调用DLL

 

*把生成的DLL文件导入Unity文件目录中的Plugins文件夹

 

*c# 调用DLL,以下为固定写法,必须先引用using System.Runtime.InteropServices命名空间,需要注意中的一点就是C++中的回调函数对应C#中的委托,把委托传到CheckPos函数即可

image

image

 

 

好了,就这样。 第一次写博客,逻辑不是很严谨。

posted @ 2018-09-13 11:11  luoXX  阅读(1029)  评论(0)    收藏  举报