无法找到导入的DLL的类型或名称空间

时间:2019-02-27 05:31:06

标签: c# unity3d dll dllimport

我从此page下载了“ smilenet-1.2.1-win64-academic”库,并将smileNET.dll导入了我的Unity项目。然后,我重新启动了Visual Studio,当我尝试使用该库时,它给了我一个错误,即找不到类型或名称空间。我按照他们的documentation文件Hello.cs中的说明尝试了using Smile;using smileNET;,但是没有用。我尝试了64位版本以及32位版本。我的统一版本是2018.1.8f1 64bit

当我检查下载的dll时,它说我的VS2017运行版本v4.0.30319时> NET版本是4.7.03056,这可能是问题吗?

我尝试过的各种事情:

  1. 我还尝试了手动添加引用。添加引用的选项没有出现,因此我单击了Project> Referneces> Analyzers,如下所示,然后在顶部菜单中单击了Project>Add References,然后添加了smileNET.dll文件。这样做可以(暂时)修复错误。当我关闭VS时,它询问我是否要将更改保存到Chem-o-Crypt.sln Assesmbly-CSharp*,所以我说“是”(尽管我怀疑它是否确实保存了)。但是,当我重新启动Visual Studio时,我发现该引用已消失,并且错误再次弹出。 h:/

enter image description here

  1. 还尝试启用不安全代码的编译(以防万一),如Unity documentation所示,但也没有用。

enter image description here

  1. 我还有另一个文件夹(Chem-o-Crypt/Assets/bayesserver-8.3/DotNet/Standard20/),其中包含其他几个运行良好的dll,因此我将dll粘贴到了那里,但它不起作用。
  2. 我确实尝试过将这个dll添加到Chem-o-Crypt/Chem-o-Crypt/PluginsChem-o-Crypt/AssetsChem-o-Crypt/Assets/Plugins中,但不是,但这似乎是固定的,无法正常工作。
  3. li>
  4. Chem-o-Crypt\Assets\Plugins\x64中复制了dll的64位版本,在Chem-o-Crypt\Assets\Plugins\x86中复制了32位的版本。
  5. 将dll复制到Unity编辑器的根目录(例如C:\ Program Files \ Unity \ Editor)
  6. This person与我的错误相同。跳到15:21的时间,但是我无法使用他的解决方案,因为我的项目资源管理器中的内容显示方式有所不同。基本上,dll不会像在他那里那样显示在那儿。

1 个答案:

答案 0 :(得分:0)

我下载了dll,很遗憾,这是一个混合程序集,请参见图片,Unity不支持。

unmanaged

那么一些解决方法可以是:

  • 构建并使用native plugins

  • 使用smileNET.dll创建另一个C#程序并与Unity程序通信。