(1)unity2019.4.12f1
(2)Visual Studio 2019
2. 生成dll文件
#define EXPORT_API __declspec(dllexport)
extern"C" EXPORT_API int GetNumber()
{
return 55;
}
其中__declspec(dllexport)为定义dll的定义符号,通过#define表示后,可以用EXPORT_API来替代;在正常的函数前面加上extern"C"和__declspec(dllexport)即可在C#脚本中调用相关的函数。
在属性页要设置:
输出目录表示生成的dll的位置,在c#中调用时需要这个地址,配置类型设置伟动态库(.dll),平台工具集表示VisualStudio的版本,如果系统安装了其它版本的VS可以在此进行设置;因为我是为了用于图像处理,需要配置OpenCV,所以此处工具集要与OpenCV的版本匹配,具体匹配规则,请直接搜索或者在我的其它文章中寻找。此时,已经完成了dll的生成部分。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Runtime.InteropServices;
public class control : MonoBehaviour
{
// Start is called before the first frame update
[DllImport("F:\\Project13\\ButtonCover\\x64\\dll文件\\ButtonCover.dll")]
public static extern int GetNumber();
void Start()
{
int ss;
ss = GetNumber();
print(ss);
}
}
其中,using System.Runtime.InteropServices时调用dll必须加入的。 [DllImport(“F:\Project13\ButtonCover\x64\dll文件\ButtonCover.dll”)]让C#程序可以找到对应的dll所在的位置,如果在系统路径或者EXE所在文件夹可以不写绝对路径。
public static extern int GetString()在函数前加上public static extern 后即可在脚本中正常调用该函数。int表示返回类型。
4.点击运行即可