编辑(2013年6月24日):
我想我可能已经部分找到了问题的根本原因。
我不是在测试机器上运行.exe,而是运行并编译Matlab源代码。当Matlab尝试添加第三方程序集时,会弹出一个错误,即“无法加载一个或多个请求的类型等”。经过进一步调查,我发现第三方dll依赖于另一个dll,即NationalInstruments.Common,version = 8.1.0.415,Culture = neutral,PublicKeyToken = 4544464cdeaab541。我在测试机上检查了GAC,它有NationalInstruments.Common版本8.9.35.302。有趣的是我的开发机器也有相同版本的NI .Common dll,但我很困惑为什么.exe在我的机器上工作但在测试机器上不工作。
我搜索了这个,有人建议进行程序集绑定重定向。但该示例是使用C#在Visual Studio中进行开发。我想知道有没有办法直接在Matlab中做同样的事情?
结束编辑
我正在开发一个简单的Matlab应用程序/ GUI,只需按一下按钮,就可以从外部硬件获取数据并绘制它们。供应商提供了一个API,以.net dll程序集的形式访问此硬件。因此,在Matlab中,我使用NET.addAssembly添加了程序集。但是,我必须提供完整的路径,因为它是一个私人组件。当我将代码编译成.exe时,它在我的机器上运行正常。但是,当我把它带到另一台机器时,它不会运行。仅供参考,具有正确版本的Matlab的MCR安装在另一台机器中,因此问题不在于缺少MCR。
我认为问题是因为当我在NET.addAssembly中引用dll时,我使用完整路径在我的机器上找到dll。所以,在另一台机器上,它找不到它。所以我尝试将dll放在另一台机器上的同一文件夹中,但无法运行。我还尝试在编译.exe时打包dll,但这样做也不行。
有人可以建议我下一步该做什么吗?谢谢!