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。

相關文章
相關標籤/搜索