Unity3d 调用C++的DLL

原地址:http://www.cnblogs.com/alongu3d/archive/2013/04/20/3031904.htmlhtml

                            Unity 3D 调用DLL的方法

本文转载:渡蓝的博客园 http://www.cnblogs.com/oldman/articles/2501486.html函数

若是涉及到版权问题,则请留言,我会尽快删除!post

 接触Unity 3D 时间不长,看到网上有人问怎么经过Unity来调用Dll,并且发现这个问题彷佛是用unity的朋友并不熟悉DLL的使用形成的,正好我使用过C++,对DLL还比较熟悉,所以写了一个小小的教程来谈谈unity的Dll调用方法。

 

1.建立DLLthis

困扰Unity人员的主要问题大概出于Dll不会生成。这个确实比较麻烦,我这里给出一个vs 2008中建立DLL的方法。url

  1)首先打开vs2008,固然2005或者2003也都差很少。我这里用的是2008..net

      在C++项目中选择 Win32程序,而后在控制台程序或者win32程序任选一个。 写上项目名字点建立。3d

 

   2) 任选一个的缘由是这里并不重要,重要的是下一步,建立之后会出现一下这个面板。 选下一步见以下选项:htm

       注意,首先选DLL,证实咱们这个程序是个dll项目。选“空项目”的目的是建一个计较干净的DLL程序,里面的代码都有咱们手写完成,这样写过什么咱们都知道。blog

  3)建立项目,这样咱们获得一个空项目,在这个项目中,除了几个文件加之外什么也没有,咱们在文件夹上点右键,建立新项。在新项里面分别建立一个CPP文件和一个头文件。教程

 4)获得以下的两个文件:起什么名字并不重要

  5)如下是2个文件的代码:DLL的生成要提及来也一大堆的知识,我这里简单的说一下,dll的使用和生成用的宏不一样,上面的代码主要是区分在不一样环境中该使用那个宏,若是不理解就不要管了,大家只须要改最下面的哪一个函数就好了。

头文件

///////////////////  DLL.h /////////////////////////////

[cpp]  view plain copy
  1. #if defined (EXPORTBUILD)  
  2. # define _DLLExport __declspec (dllexport)  
  3. # else  
  4. # define _DLLExport __declspec (dllimport)  
  5. #endif  
  6.   
  7. extern "C"  int _DLLExport MyADD(int x,int y);  


代码文件 

//////////////////   DLL.cpp //////////////////////////// 

[cpp]  view plain copy
  1. //宏定义  
  2. #define  EXPORTBUILD  
  3.   
  4. //加载头文件  
  5. #include "DLL.h"  
  6.   
  7. //设置函数  
  8. int _DLLExport MyADD(int x,int y)  
  9. {  
  10.     return x+y;  
  11. }  

这样咱们就生成了一个MyAdd()函数,传入两个数就会返回它们的和。 而后编译这个程序,会出现下面的对话框,那就证实你成功了!而后再把这个DLL文件放在你的unity工程的assert的Plugins(若是没有这个文件夹就手动建立一个)。

 

 6) 在unity中建立一个C#脚本,调用咱们刚刚生成的dll,在这里咱们的DLL名字就叫DLL,因此写的是[DllImport ("DLL")] ,若是你的名字是Test.dll,那就写[DllImport ("Test")]

     写一个GUI按钮上显示运行的结果。

 

[csharp]  view plain copy
  1. using UnityEngine;    
  2.   
  3. using System.Collections;    
  4.   
  5. using System.Runtime.InteropServices;    
  6.   
  7. public class NewBehaviourScript : MonoBehaviour {  
  8.         
  9.       [DllImport ("DLL")]    
  10.       private static extern int MyADD(int x,int y);    
  11.       int i = MyADD(5,7);     
  12.     // Update is called once per frame  
  13.     void Update () {}  
  14.     void OnGUI()   
  15.     {  
  16.         GUI.Button(new Rect(1,1,200,100),"this DLL  i = 5+7, i is '"+i+"'");  
  17.     }  
  18. }  

运行经过就能够在界面上看到

 

 

7)输出unity项目exe到目录,而后在目录中也添加Plugins目录,把DLL文件也考进去,而后点运行,呵呵 成功了吧!

 

以上是unity 输出exe到win32系统的状况,下来看一看如何在其余平台上调用DLL。

相关文章
相关标签/搜索