【问题标题】:Importing DLL into Unity - Type or namespace could not be found将 DLL 导入 Unity - 找不到类型或命名空间
【发布时间】:2015-12-28 03:25:59
【问题描述】:

我正在使用 USB 接口设备(请参阅here)开发一个项目,并尝试在我的 Unity 应用程序中使用 SDK 包中提供的 DLL。最终目标是允许 Unity 访问硬件的输入和输出 - DLL 提供了此功能。

I added the DLL to the project,并尝试通过脚本访问它。

using UnityEngine;
using System.Collections;
using k8055d;

public class DLLTest01 : MonoBehaviour 
{   
    public k8055d usbHandler;

    void Start(){}
}

Unity 给我一个错误。错误是:

Assets/Resources/Scripts/DLLTest01.cs(3,7):错误 CS0246:类型或 找不到命名空间名称“k8055d”。你错过了一个使用 指令还是程序集引用?

DLL 肯定在项目的文件夹中,并命名为“k8055d.dll”,这可能是什么原因,我可以做些什么来让 DLL 与我碰巧为我的硬件设备制作的任何游戏一起工作?

我觉得这可能与 Unity 使用的 .NET 版本有关,但我不确定如果这是问题我能做些什么。

【问题讨论】:

标签: c# .net dll unity3d import


【解决方案1】:

我检查了文档,您的 DLL 不是 .NET 的。它已编译,因此您需要使用插件才能将其与 Unity3D 一起使用。 (您可能需要围绕该原生 dll 代码创建一个 .NET 包装器。)

Documentation about how to create plugins is available at the Unity Manual

【讨论】:

  • 谢谢!我会调查这个:)
【解决方案2】:

来自统一论坛的This answer 应该可以帮助您:

要在游戏中使用外部 DLL,只需将其放在 Unity 项目的 Assets 目录中即可。然后,下次 Unity 同步 Visual Studio/MonoDevelop 项目时,它将在 Visual Studio/MonoDevelop 项目中添加对 DLL 的必要引用。

所以,尝试将 DLL 放在您的 Assets 目录中,看看是否可行!

您也可以尝试使用 DllImport,如下所示:

[DllImport("k8055d.dll")] 

但正如您在问题中所说,这很可能是 .NET 版本问题。

【讨论】:

  • 嗨,Micah,看看我的编辑是否对您有帮助。否则,我以后只好自己在家里试试了:)
  • 不幸的是,使用 DLLImport 只是给我抛出了这个错误。资产/资源/脚本/DLLTest01.cs(6,10):错误 CS0246:找不到类型或命名空间名称“DllImport”。您是否缺少 using 指令或程序集引用?
  • 再次感谢您的帮助!我很高兴等你回家 :)
  • 不用担心。我想您可能需要using System.Runtime.InteropServices; 来进行 DLLImport,这有帮助吗?
  • 啊,甜,有道理。但是,我现在收到此错误:Assets/Resources/Scripts/DLLTest01.cs(7,10): error CS0601: The DllImport attribute must be specified on a method标记为static' and extern'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-19
  • 1970-01-01
  • 1970-01-01
  • 2013-03-25
  • 2022-09-27
  • 2017-07-12
  • 2011-05-13
相关资源
最近更新 更多