我试图从64位Matlab调用32位DLL。我选择使用Labview,32位和它的DLL导入向导,并通过ActiveX调用Labview。我被迫遵循这条道路,作为一种使用32位DLL提供的仪器供应商。
如果我安装了Labview 64位,我可以使用Matlab行e=actxserver('LabVIEW.Application');
,它可以很好地加载。
如果我安装了(仅) Labview 32位,那么行e=actxserver('LabVIEW.Application');
就会失败,因为“服务器创建失败:系统找不到指定的文件”。
但是,如果我启动32位Labview可执行文件以使其运行,那么matlab行e=actxserver('LabVIEW.Application');
可以很好地工作,我可以调用VI,设置参数,从Matlab运行VI等等。
因此,Matlab不能启动Labview,但它可以“连接”当前正在运行的Labview实例。有人能理解和解释发生了什么吗?
致以良好的问候,拉斯·格朗洛夫
发布于 2022-02-02 17:59:51
验证Windows中的LocalServer键不是指向64位版本的LabVIEW,而是指向32位版本,您可以在这里找到该键: Computer\HKEY_CLASSES_ROOT\CLSID\
在windows注册表中搜索"LabVIEW.Application“以找到全局唯一标识符,它看起来类似于{XXXXXXXX-XXXX-XXXXXXXXXXXX}
这些是我的个人电脑中的值:
LocalServer: C:\程序文件(X86)\国家仪器\LabVIEW 2018\LabVIEW.exe /Automation
LocalServer32: C:\程序文件(X86)\国家仪器\LabVIEW 2018\LabVIEW.exe /Automation
ProgID: LabVIEW.Application.8
VersionIndependentProgID: LabVIEW.Application
https://stackoverflow.com/questions/61406244
复制相似问题