Unity3D笔记(十六)在Unity中导入C/C++编写的DLL

问题描述: 最近项目中需要导入一个C语言封装好的DLL,由于之前没接触过相关操作,直接导入工程添加引用,结果报错“未能添加对”XXXX.dll“的引用。请确保文件可访问并且是一个有效的程序集或COM组件”。网上搜索,原因为此DLL为非托管的DLL。

托管DLL:完全由.NET托管代码实现的dll,完全依赖于.NET平台的CLR运行。托管dll受.NET CLR管控,支持内存自动回收等的,对于.NET平台是安全dll(用.net代码实现的dll,可以是用C#, VB.NET,F#等实现的)

非托管DLL:是指完全或者部分不是用.NET代码实现,不依赖于.NET平台即可运行,例如COM方式的dll,不支持自动回收内存,对于.NET平台而言,也是非安全可控的。(完全不是或部分不是用.net代码实现的dll,可能是C/C++实现)。

解决方式:
非托管的DLL只能使用DllImport方式导入,新建一个类,通过这个类去调用dll中的方法。

public static class DllImport
       [DllImport("dll名", EntryPoint = "方法名", CallingConvention = CallingConvention.Cdecl)]
        public static extern int Init(//有参数添加参数);
    [DllImport("dll名", EntryPoint = "Release", CallingConvention = CallingConvention.Cdecl)]