【发布时间】:2018-10-12 01:33:11
【问题描述】:
我对 MWArray.dll 有疑问,这是从 Matlab 编译的 mathworks 的原始 dll 库。这个dll在visual studio下工作,但在unity下不工作。目标是在 matlab 下编译一个简单的函数 mycos,它计算一个余弦并将其与第二个 dll MWArray mathworks 库统一使用。
我在visual studio下做了一个测试,效果很好。我可以毫无问题地读取 dll 并调用 mycos.dll 类。我做了一个典型的 c# 项目,在 MWArray 和 mycos 上有两个参考。
但是当我在 unity 下尝试时,将两个 dll 放在插件文件夹下并在 .NET 4.0 上配置 unity 2018,因为 dll 是使用 .NET framework 4.0 编译的。
Unity 可以读取 dll,但运行时出现错误:
NotImplementedException: The requested feature is not implemented.
System.Security.Principal.WindowsIdentity.GetCurrent (Boolean ifImpersonating)
(at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Security.Principal/WindowsIdentity.cs:166)
如果我想将 matlab 用于一个研究项目,该项目是在 matlab 中编码的,具有高级高级数学函数,在与 c# 的统一下很难重新编码。所以最简单的方法是使用 matlab 编译器的编译包。那么有人已经这样做了吗?
【问题讨论】:
-
相关:forum.unity.com/threads/use-dll-for-unity3d.132960 我无法从您的描述中看出哪些部分是 .Net 以及哪些部分需要纯 C 链接,因此您可能需要在那里整理一些东西。但看起来 Unity 的版本也很重要。
-
那个错误指的是 Mono。很确定 MWArray.dll 是用 .Net framweork 构建的,而不是 Mono,所以这不起作用.. 可以尝试构建 Matlab 函数的纯 C dll 并调用它吗?
标签: visual-studio matlab unity3d