zoukankan      html  css  js  c++  java
  • Unity3d 调用C++的DLL

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

                                Unity 3D 调用DLL的方法

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

    如果涉及到版权问题,则请留言,我会尽快删除!

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

    1.创建DLL

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

      1)首先打开vs2008,当然2005或者2003也都差不多。我这里用的是2008.

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

       2) 任选一个的原因是这里并不重要,重要的是下一步,创建以后会出现一下这个面板。 选下一步见如下选项:

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

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

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

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

    头文件

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

    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 //////////////////////////// 

    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 plaincopy
    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。

  • 相关阅读:
    ajaxfileupload
    ASP.NET从MVC5升级到MVC6
    jvm(13)-线程安全与锁优化(转)
    成为顶尖自由职业者必备的7个软技能之一:沟通(转)
    在ubuntu安装Phabricator(转)
    查看mysql当前表使用的存储引擎(转)
    在Java中如何使用jdbc连接Sql2008数据库(转)
    漂亮的ActionBar效果
    Android smartimageview网络图片查看器
    Android 图板之保存图像
  • 原文地址:https://www.cnblogs.com/123ing/p/3854091.html
Copyright © 2011-2022 走看看