Unity调用C++的Dll 您所在的位置:网站首页 unity调用opencv Unity调用C++的Dll

Unity调用C++的Dll

2023-08-31 11:03| 来源: 网络整理| 查看: 265

Unity调用C++的Dll

摘要:C++的DLL载入,即用C++写的库,Unity转化为C#调用。

使用步骤如下:

首先在VS中创建生成出你的dll也就是动态链接库,在Win32中选择流程即可。需要注意几点,vs2017版本的需要有C++的vs功能包下载才能安装,2017版本的直接选Dll动态链接就行,而前面几个版本则不需要,流程是一模一样的。

这里选择Win32控制台应用程序。然后再根据如下图操作,不过不一定要空项目,带预编译头也可以。

之后就是一般的添加C++文件,在解决方案资源管理器的源文件中添加。

之后写你的绑定函数,稍微复杂一点的可以再行研究,比如是自定义类,自己封装过的包,需要再探讨,这里先说明基本的流程和思路。

在cpp中添加如下简单的一个加法函数,用API导出,运行后就能得到dll。

extern "C" _declspec(dllexport) 返回类型 + 函数签名

不过我在后面unity使用的时候遇到了一些问题,就是我的Unity是64位的,而我导出的dll默认是32位,不匹配。所以我后来又做了其他的工作。

我们能在vs的上方看到导出的dll是什么版本的。点击配置管理器,在活动解决方案平台新建一个平台,选择x64,然后复制设置的框选择Win32就行。这样我们就改成x64的版本了。

这样我们完成了vs上面的操作,然后我们转到Unity操作,把项目文件夹里面的x64里面的dll复制出来,拉到unity项目中的Plugins文件夹中,必须是这个名称文件夹,这是Unity里面的一个知识, Unity里面的命名很重要,许多地方要保持一致。

注意x64的版本,Dll在外面的x64的文件夹里面找,能找到如下的.dll文件。

然后我们能看到这样的项目列表,新建如下的C#脚本MyDll和MyTest。代码如下:

//MyDll.cs using System.Runtime.InteropServices; public static class MyDll { [DllImport("MyDll", EntryPoint = "Add")] public static extern int MyAdd(int x, int y); } // MyTest.cs void Start () { var x = MyDll.MyAdd(1, 2); Debug.Log(x); }

随便吧MyTest脚本绑到一个物体上去,(MyDll不用)然后我们能在Console表中看到如下输出

这样一个基本的流程就完成了。然后我们能稍微写一点复杂一点的函数代码,能了解到Unity调用C++等dll的思路。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有