Unity3D 调用C++的DLL的代码## 标题
参考文献:
https://blog.csdn.net/penguin_whl/article/details/17616659#commentBox
我使用的是 vs2017生成的DLL
一、VS2017新建动态链接库项目
- 使用vs2017创建一个 名为 Unity-DLL的动态链接库
- VS2017自动生成以下文件:
- 添加TestDll.h, 并将Unity-DLL.cpp改为TestDll.cpp文件
TestDll.h中加入如下代码:
#pragma once
#ifndef TEST_DLL_H
#define TEST_DLL_H
#endif
#if defined (EXPORTBUILD)
define _DLLExport __declspec (dllexport)
else
define _DLLExport __declspec (dllimport)
#endif
extern “C” int _DLLExport add(int x, int y);
_DLLExport class TestDll
{
public:
TestDll(void);
~TestDll(void);
};
TestDll.cpp中输入如下代码:
#define EXPORTBUILD
#include “TestDll.h”
int add(int x, int y )
{
return x + y;
}
TestDll::TestDll(void)
{
}
TestDll::~TestDll(void)
{
}
-
环境配置设置为Debug x64
-
生成→生成解决方案
-
生成:成功1个;
-
在E:\4-Unity\DLL\Unity-DLL\x64\Debug中有生成的Unity-DLL.dll
二、Unity3D 调用.dll -
Unity3D 新建一个项目
-
把生成的Unity-DLL拖到Unity的Asset–>Plugins目录(没有就创造一个)
-
在Assets右侧右键单击→Create→C# Script,新建一个C#文件,假设命名为UnityTestDll
-
双击UnityTestDll,用VS2017打开
在UnityTestDll.cs中输入代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Runtime.InteropServices;
public class UnityTestDll : MonoBehaviour
{
[DllImport("Unity-DLL")]
private static extern int add(int x, int y);
int i = add(5, 7);
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
}
void OnGUI()
{
GUI.Button(new Rect(1, 1, 200, 100), "this dll i = 5+7, i is" + i);
}
}
保存关闭。
- 回到Unity3D,将UnityTestDll拖到Main Camera里面,或者新建一个对象,如Cube,将UnityTestDll拖到其里面。
在右侧Inspector面板最下面有我们刚刚加入的Script。
13.点击运行
运行Unity显示结果
调用成功。