qwuwp 2024-05-03 22:48 采纳率: 33.3%
浏览 21

想在Unity调用Labview DAQ.dll发生报错

想通过Unity调用Labview打包NI DAQ模块生成.net操作集成 VirtualDAQ.dll,发生了报错。
①开始,我将打包好的dll引用并运行在常规的C#项目里测试,并没有发生报错,可以正常采集数据。
②后来,我又将此dll放在了Unity的Plugins下,并引用,报错:没找到NationalInstruments.LabVIEW.Interop。然后我将Labview2020中的Interop.dll插件又引入到Plugins下,解决了这个问题,但又新报错:VIAssemblyException: Unable to determine the install root path for the LabVIEW Runtime Engine.但我有Labview运行引擎,并且也尝试过在Unity C#里配置环境变量,都行不通。为什么在常规C#里可以,但在Unity C#里不可以,如何解决?

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-05-03 22:48
    关注

    引自免费微信小程序:皆我百晓生

    看起来你在尝试将LabVIEW DAQ库与Unity集成时遇到了一些兼容性问题。这是因为Unity中的.NET运行时环境与标准桌面应用中的.NET环境存在差异。为了使LabVIEW的DLL能够在Unity中正确工作,你需要采取一些额外的步骤。以下是可能的解决方案:

    1. 复制依赖项: 除了VirtualDAQ.dll,你还应该将其他必要的LabVIEW运行时组件复制到Unity项目的Plugins文件夹中。这通常包括:

      • NationalInstruments.Common.dll
      • NationalInstruments.CoreService.dll
      • NationalInstruments.DAQmxBase.dll
      • NationalInstruments.DAQmxCommon.dll
      • NationalInstruments.DAQmxCore.dll
      • NationalInstruments.DAQmxInterfaces.dll
      • NationalInstruments.DAQmxTaskBuilder.dll
      • NationalInstruments.LabVIEW.Interop.dll
      • NationalInstruments.RuntimeManager.dll

      这些文件可以从LabVIEW安装目录下的bin子目录中找到(例如,C:\Program Files (x86)\National Instruments\Shared\LabVIEW Run-Time\labviewruntimesXX.YY\DotNET\PublicAssemblies)。

    2. 设置框架版本: Unity默认使用.NET Framework 4.x,而LabVIEW的DLL可能期望更高版本。确保你的Unity项目使用的是.NET 4.x或更高版本的运行时。在Unity编辑器中,转到 Edit > Project Settings > Player,然后在 Other Settings 标签页下选择 Scripting Runtime Version.NET 4.x Equivalent 或者更高版本。

    3. 处理LabVIEW路径: 在Unity中,环境变量可能不会像在普通C#应用程序中那样被自动设置。因此,你可能需要手动设置LabVIEW运行时引擎的路径。你可以创建一个C#脚本来设置这个路径,然后在Unity中运行它。下面是一个示例脚本:

    using System;
    using UnityEngine;
    
    public class LabViewPathSetter : MonoBehaviour
    {
        private const string NI_ROOT_PATH = "C:\\Program Files (x86)\\National Instruments\\Shared\\LabVIEW Run-Time\\labviewruntimesXX.YY";
    
        void Start()
        {
            // 如果路径不同,请根据你的LabVIEW安装位置调整。
            SetEnvironmentVariable("LabVIEW_DIR", NI_ROOT_PATH);
        }
    
        [DllImport("kernel32")]
        static extern bool SetEnvironmentVariable(string lpName, string lpValue);
    
        public static void SetEnvironmentVariable(string name, string value)
        {
            if (SetEnvironmentVariable(name, value))
            {
                Debug.Log($"成功设置了环境变量 {name}: {value}");
            }
            else
            {
                Debug.LogError($"设置环境变量失败: {name}={value}");
            }
        }
    }
    

    将这个脚本添加到Unity场景中,它会在游戏启动时设置环境变量。

    1. 检查权限和兼容性: 确保Unity有足够的权限访问LabVIEW DLL和其他相关文件。有时,Unity可能会因为安全限制而无法访问某些系统文件。另外,确认你的LabVIEW版本与Unity支持的.NET版本兼容。

    2. 重新构建项目: 清理并重建Unity项目,确保所有更改都被应用。

    按照这些步骤操作后,你应该能在Unity中成功使用LabVIEW DAQ库。如果你仍然遇到问题,请检查Unity日志和错误消息,它们可能会提供有关具体问题的更多信息。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月3日

悬赏问题

  • ¥15 有偿求苍穹外卖环境配置
  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 C#连接不上服务器,