将 DLL 导入 Unity - 找不到类型或命名空间

Posted

技术标签:

【中文标题】将 DLL 导入 Unity - 找不到类型或命名空间【英文标题】:Importing DLL into Unity - Type or namespace could not be found 【发布时间】: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 版本有关,但我不确定如果这是问题我能做些什么。

【问题讨论】:

DLL 是否兼容 .NET 3.5? 如何检查?? 看这里:***.com/questions/325918/… 【参考方案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'

以上是关于将 DLL 导入 Unity - 找不到类型或命名空间的主要内容,如果未能解决你的问题,请参考以下文章

找不到类型或命名空间名称“...” - Unity Vuforia

错误 CS0246:找不到类型或命名空间名称“Player”(您是不是缺少 using 指令或程序集引用?) Unity [关闭]

Unity中缺少命名空间,找不到dll

请问asp.net dll 编译时 找不到类型或命名空间名称“名称”(是不是缺少 using 指令或程序集引用你如何解决了

Unity3D日常BUGUnity3D解决“找不到类型或命名空间名称“XXX”(您是否缺少using指令或程序集引用?)”等问题

Unity3D日常BUGUnity3D解决“找不到类型或命名空间名称“XXX”(您是否缺少using指令或程序集引用?)”等问题