我已经成功使用DLLImport
和LoadLibrary
将C ++ DLL加载到Unity,并且注意到以下差异:
LoadLibrary
采用路径,这意味着,如果将dll放在Plugins文件夹中,则在构建应用程序时,LoadLibrary
仍会在Plugins文件夹中查找dll,在Application.dataPath
中不是。
DLLImport[("name")]
的工作原理相同,但是在构建应用程序时,它是从应用程序数据文件夹而不是Unity Editor插件文件夹中加载dll-这是我们想要的正确行为。
对于这两种情况,dll均被复制到应用程序的数据文件夹中。
使LoadLibrary
和DLLImport
一样搜索dll的最佳方法是什么?
根据Where does DLLImport look for unmanaged DLLs?,我可以以某种方式使用清单文件,但不清楚如何执行此操作。另外,我无法使用#if UNITY_EDITOR
或#if UNITY_STANDALONE_WIN
,因为我在一个单独的C#dll项目中管理所有本机dll(无法访问unity API)。