Unity3D教程:调用C++中DLL文件
来源:互联网 发布:网络电视有什么功能 编辑:程序博客网 时间:2024/05/29 04:41
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的使用和生成用的宏不同,上面的代码主要是区分在不同环境中该使用那个宏,如果不理解就不要管了,你们只需要改最下面的哪个函数就行了。
头文件
#if defined (EXPORTBUILD)
# define _DLLExport __declspec (dllexport)
# else
# define _DLLExport __declspec (dllimport)
#endif
extern "C" int _DLLExport MyADD(int x,int y);
代码文件
//宏定义
#define EXPORTBUILD
//加载头文件
#include "DLL.h"
//设置函数
int _DLLExport MyADD(int x,int y)
{
return x+y;
}
这样我们就生成了一个MyAdd()函数,传入两个数就会返回它们的和。 然后编译这个程序,会出现下面的对话框,那就证明你成功了!然后再把这个DLL文件放在你的unity工程的assert的Plugins(如果没有这个文件夹就手动创建一个)。
6) 在unity中创建一个C#脚本,调用我们刚刚生成的dll,在这里我们的DLL名字就叫DLL,所以写的是[DllImport (“DLL”)] ,如果你的名字是Test.dll,那就写[DllImport (“Test”)]
写一个GUI按钮上显示运行的结果。
using UnityEngine;
using System.Collections;
using System.Runtime.InteropServices;
public class NewBehaviourScript : MonoBehaviour {
[DllImport ("DLL")]
private static extern int MyADD(int x,int y);
int i = MyADD(5,7);
// Update is called once per frame
void Update () {}
void OnGUI()
{
GUI.Bu
tton(new Rect(1,1,200,100),"this DLL i = 5+7, i is '"+i+"'");
}
}
运行通过就可以在界面上看到
7)输出unity项目exe到目录,然后在目录中也添加Plugins目录,把DLL文件也考进去,然后点运行, 成功!
- Unity3D教程:调用C++中DLL文件
- Unity3D教程:调用C++中DLL文件
- unity3d 调用C++中DLL文件
- Unity3D调用.DLL文件
- Unity3d中调用C/C++封装的DLL
- Unity3D教程:静态调用C#的dll
- unity3d 调用C#的dll文件
- java中调用dll文件
- QT中调用DLL文件
- Unity3D引用dll教程
- Unity3D 如何调用DLL
- unity3d调用DLL
- VC6中调用.dll文件中的函数——傻瓜式教程
- [原创]VC6中调用.dll文件中的函数——傻瓜式教程
- Unity3D中JS调用DLL不能的曲线救国方法
- Unity3D中使用C#调用C++编写的DLL
- Java调用C语言DLL文件方法
- 调用C语言编写的DLL文件
- VPN概述
- android picture is not mutable解决!
- Comparator实现字符串排序
- WinHTK开发与使用二:孤立词识别
- css float 实例
- Unity3D教程:调用C++中DLL文件
- css position
- css position 示例
- java中thread的start()和run()的区别
- css 盒子模型
- mybatis关联外键查询
- javascript执行环境(作用域)与作用域链深入剖析及项目经验
- Emacs+Auctex+TexLive 便携式
- JVM结构整理