使用特定的x64库时,无法在任何CPU平台下编译应用程序?

时间:2016-08-12 16:29:16

标签: c# .net matlab visual-studio

所以我一直在Visual Studio 2015下创建一个C#应用程序。一开始,我正在编写类,通过制造商提供的USB库与硬件进行交互,现在我处于更高级别并编写类来进行MatLab数据处理。

当我实现与硬件交互的类时,我发现我的一些库是针对x86或x64的,并且针对一个或其他平台进行编译,这破坏了我对使用备用paltform的库的使用。我发现,如果我使用我的应用程序将编译的Any CPU平台,这只是让我满意并且我当时没有进一步阅读。

这可能是正确的吗?您可以混合使用x86和x64库吗?或者我是否真的误读了文档?

虽然现在我已经到了这一点,我想使用MathWorks提供的名为VideoWriter的库,通过MatLab编译器SDK将数据传输到MatLab脚本以及从Matlab脚本编译到.NET库工具箱。

经过一些测试后,我发现MWArray库只能在x64下编译(虽然未经测试,我想如果你有一个x86版本,它会做同样的事情)。

看到我现在正在成功使用x64和x86库,是什么让这个库特别无法在任何CPU下编译?

1 个答案:

答案 0 :(得分:3)

不,您不能在同一进程中混用32位和64位程序集。

当然,它可以编译,但除非你特意避免在运行时加载不正确的程序集类型,否则它肯定不会运行。

换句话说,如果您的64位进程(即在64位操作系统中的64位处理器上运行的任何CPU程序)尝试加载32位程序集,您将获得异常。< / p>

同样,如果您只是在上面的语句中切换64和32,那么对于相反的组合,这将成立。