软件
编写c++开发工具:VS2017社区版
c#调用的工具:unity2018.3.13
注:下载地址自行百度,楼主也忘了,网上多得很,需要强调的是安装VS2017时我勾选了四个模块具体如下。unity安装的话相对简单,没什么需要注意的
创建C++项目导出C#调用的DLL
步骤
打开VS2017,创建一个控制台应用,命名为U3DDLL(楼主因为该项目已存在所以截图时的名称都是U3DDLL1)
- 生成的目录基本结构
- 此时生成的DLL默认为exe程序,修改为dll程序并设置生成的dll适合64位和release版(文件更小,效率更高)
- 右键选中项目后点击属性进入编辑界面
- 修改前的截图
- 修改后截图
新建头文件,命名为U3DTestDLL.h,并添加如下代码
#if ndef_U3DTestDLL_H_
#define_U3DTestDLL_
#ifdefU3DDLL_EXPORTS
#defineEXPORTS_U3DDLL _declspec(dllexport)
#else
#define EXPORTS_U3DDLL _declspec(dllimport)
extern"C" EXPORTS_U3DDLL int Add(int a, int b);
#endif
- 新建源文件,命名为U3DTestDLL.cpp,并添加如下代码
#include"U3DTestDLL.h"
intAdd(int a, int b)
{
return (a + b);
}
生成动态链接库(DLL)
点击生成之后可以在控制日志的地方看到生成dll的地址
UNITY中调用
创建一个u3d的项目,Asset目录下创建Plugins的文件夹,复制DLL到Unity工程中的Asset/Plugins文件夹中
在Asset目录下,创建C# script文件,编写代码,测试调用dll中的方法,代码如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Runtime.InteropServices;
/**
* Unity调用C#封装Dll文件
* 2020/10/13 15:55:32
*/
public class TestUSBInfoDLL : MonoBehaviour
{
[DllImport("U3DDLL")]
private static extern int Add(int a, int b);
// Start is called before the first frame update
public void Start()
{
Debug.Log("调用方法Add");
Debug.Log(Add(9,6));
}
// Update is called once per frame
void Update()
{
}
}
将c#文件挂在到对应的对象下,将文件拖拽到audio listener下面
点击中间上面的启动按钮,调用的结果如图,调用成功
如果大家不想自己动手封装的话可以直接下载楼主的dll进行测试,另外里面还有一个楼主用来获取U盘序列号的函数,资源链接(如果链接失效可以去本人下载中找对应名称资源下载):