Unity3d 调用C++ DLL Win平台

               

Unity3d提供了功能可以让我们自己用各种语言编写 Plugin 来在Unity中使用,官方有简单的文档介绍

http://docs.unity3d.com/Manual/30_search.html?q=dllimport

之前的博文介绍了在 Android 平台使用C++ Plugin。

http://blog.csdn.net/huutu/article/details/43602659

本文在Win平台使用C++ DLL。

转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn

编译一个简单的C++ DLL

首先来编译一个简单的C++ DLL供Unity3d 使用。转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn

在VS 中选择控制台 项目

转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn

扫描二维码关注公众号,回复: 5105882 查看本文章

转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn

选择空项目 动态链接库

转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn

然后添加代码 Calculate.h   Calculate.cpp 文件。

转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn

Calculate.h 代码如下:

# define _DLLExport __declspec (dllexport) //标记为导出函数;extern "C" long long _DLLExport dlltest();


Calculate.cpp 代码如下:

#include "Calculate.h"long long dlltest(){  long long a = 1;  int b = 0;  while(b<1000000000)  {   a=a+b;   b++;  }  return a;}

转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn

将 配置 修改为 Release ,我们编译一个Release 版本。 找到编译出来的 DLL文件,例如我这里是 TestDLL.dll 。

转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn

在Unity3d工程中使用DLL

创建一个Unity3d工程,在Assets 下创建 文件夹 Plugins 目录,把我们的DLL 文件 放到这个目录中。

测试代码如下:

using UnityEngine;using System.Collections;using System.Runtime.InteropServices;public class NewBehaviourScript : MonoBehaviour { [DllImport ("TestDLL")private static extern long dlltest()// Use this for initialization void Start () {  } void OnGUI({  if(GUI.Button(new Rect(100,100,200,200),"Test DLL"))  {   long before=System.DateTime.Now.Ticks;   Debug.Log("dlltest="+ dlltest());   Debug.Log("take "+(System.DateTime.Now.Ticks-before));  }  if(GUI.Button(new Rect(300,300,200,200),"Test Mono"))  {   long before=System.DateTime.Now.Ticks;   Debug.Log("monotest="+ monotest());   Debug.Log("take "+(System.DateTime.Now.Ticks-before));  } } // Update is called once per frame void Update () {  } long monotest({  long a = 1;  int b = 0;  while(b<1000000000)  {   a=a+b;   b++;  }  return a; }}

使用DLL 中的函数要按照如下格式:

[DllImport ("TestDLL")private static extern long dlltest();
转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn


DllImport 参数说明:

EntryPoint                 指定要调用的 DLL 入口点。

CharSet                    控制名称及函数中字符串参数的编码方式。默认值为 CharSet.Ansi。

ExactSpelling          是否修改入口点以对应不同的字符编码方式。

CallingConvention  指定用于传递方法参数的调用约定。默认值为 WinAPI。该值对应于基于32位Intel平台的 __stdcall。

BestFitMapping      是否启用最佳映射功能,默认为 true。最佳映射功能提供在没有匹配项时,自动提供匹配的字符


运行结果


示例工程下载:

http://download.csdn.net/detail/cp790621656/8699673


           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

猜你喜欢

转载自blog.csdn.net/qq_43667944/article/details/86573153