【问题标题】:Matlab: Could not load file or assemblyMatlab:无法加载文件或程序集
【发布时间】:2021-09-20 02:48:33
【问题描述】:

公平警告,我对使用 Matlab 和 Visual Studio 比较陌生。

我一直在尝试创建可用于通过 USB 与 arduino 通信的代码。我使用名为 CmdMessenger 的库找到了一些示例代码,这些示例提供了加载到 Arduino 上的代码和使用 Visual Studio 构建的代码。默认情况下,示例在命令行上运行,但我将它们设置为创建 .DLL 文件并使用 NET.addAssembly 将这些文件添加到 Matlab 并使用它们。最初这工作得很好,我能够向我的 arduino 发送命令以切换 LED 一段时间,然后将确认信号发送回 Matlab。

不幸的是,我需要对示例代码进行更改,因此我添加了一些自己的代码并使用更适合我需要的不同示例代码创建了一个新的 DLL。我能够再次使用“a = NET.addAssembly”并在 Matlab 中使用命名空间。然后我进行了更多更改,清除了变量“a”,并尝试再次使用“a = NET.addAssembly”,但这次我收到了错误消息。

事实上,我尝试添加之前使用的示例 DLL,现在它也给了我相同的错误消息。我已经搜索并没有发现任何可以帮助我纠正这种情况的东西。

我给出的命令是:“a = NET.addAssembly('C:\DLL\SendAndReceiveArguments.dll');”

我收到的错误信息是:

Message: Could not load file or assembly 'file:///C:\DLL\SendAndReceiveArguments.dll' or one of its dependencies. An attempt was made to
load a program with an incorrect format.
Source: mscorlib
HelpLink:

任何解决此问题的建议将不胜感激。

【问题讨论】:

  • 您应该尝试通过谷歌搜索错误并返回此处获取更多信息
  • 我有一些新发现。首先,一个有趣的实验结果。我尝试将 NET.addAssembly('C:\DLL\SendAndReceiveArguments.dll') 与我知道不起作用的 .dll 一起使用。我得到了如上所述的错误。然后,我将 C:\DLL 中的填充替换为我知道有效的填充。然后我使用了相同的命令,它也抛出了同样的错误。所以我关闭了 Matlab,重新打开它,然后用我知道的 dll 再次尝试了这个命令。它加载没有问题。我仍然不知道为什么其他 dll 不起作用,但我今天会研究更多。我会发布我发现的内容。
  • 我仍然可以使用帮助来解决这个问题。昨天我进行了一次疯狂追逐,试图使用“regsvr32”,但我得到一个新的错误说明:模块“SendAndReceiveArguments.dll”已加载,但未找到入口点 DllRegisterServer。确保“SendAndReceiveArguments.dll”是有效的 DLL 或 OCX 文件,然后重试。没有明确解释如何确定 DLL 是否有效,当我尝试使用实际适用于 Matlab 的“SendAndReceiveArguments.dll”版本时,我得到了同样的错误,所以我不知道我是否接近在正确的轨道上。

标签: visual-studio matlab assemblies mscorlib


【解决方案1】:

在我上一篇文章后 5 分钟,我从这个网站上提出的另一个问题中弄清楚了。显示到目前为止我的搜索效果如何。

this question 的第一个答案让我走上了正确的道路。我需要做的就是右键单击 Visual Studio 中的项目并选择“属性”。在此菜单中,从左侧面板中选择“构建”,并确保“平台目标:”设置为“任何 CPU”(由于某种原因,我的设置为 x86)。

Image: Under the project properties, go to the 'Build' menu and make sure 'Platform target:' is set to 'Any CPU'

通过此更改,我的项目加载到 Matlab 中没有问题。

很抱歉浪费了任何人的时间来寻找我自己可以找到的答案,感谢您的宝贵时间。

【讨论】:

    猜你喜欢
    • 2020-08-17
    相关资源
    最近更新 更多