Unity调用C++的Dll

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的思路。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值