Unity3D2019.4.12f在Visual Studio2019中调用dll

Unity3D2019.4.12f在Visual Studio2019中调用dll

  1. 环境:unity3D2019.4.12f1、Visual Studio2019 community

unity2019.4.12f1
(1)unity2019.4.12f1
Visual Studio2019
(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#脚本中调用相关的函数。
在属性页要设置:
Unity3D2019.4.12f在Visual Studio2019中调用dll_第1张图片
输出目录表示生成的dll的位置,在c#中调用时需要这个地址,配置类型设置伟动态库(.dll),平台工具集表示VisualStudio的版本,如果系统安装了其它版本的VS可以在此进行设置;因为我是为了用于图像处理,需要配置OpenCV,所以此处工具集要与OpenCV的版本匹配,具体匹配规则,请直接搜索或者在我的其它文章中寻找。此时,已经完成了dll的生成部分。

  1. 调用dll文件
    (1)unity工程设置
    Unity3D2019.4.12f在Visual Studio2019中调用dll_第2张图片
    新建unity3D工程,新建C#脚本,新建一个Cube,然后将C#脚本挂在Cube上(当点击运行时,此时可以自动运行C#脚本,从而通过C#脚本调用dll)
    Unity3D2019.4.12f在Visual Studio2019中调用dll_第3张图片
    通过将C#脚本拖拽到Cube的面板上即可将脚本挂上。
    双击C#脚本Control可以进入VS界面:
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.点击运行即可
Unity3D2019.4.12f在Visual Studio2019中调用dll_第4张图片

你可能感兴趣的:(图像处理,c#,c++,unity)