图像分析和64位操作系统

时间:2010-03-20 08:13:14

标签: visual-studio-2008 32bit-64bit

我开发了一个使用Congex视觉库(VPro)的C#应用​​程序。我的应用程序是在具有3GB RAM的32位Windows PC上使用Visual Studio 2008 Pro开发的。

在应用程序启动期间,我看到分配了大量内存。到目前为止一切都很好,但是当我添加许多视觉细节时,内存分配会增加,而应用程序的一部分(仅限Cognex OCX)会停止运行。其余的应用程序仍然可以工作(工作线程,com on socket ....)

我尽我所能来节省内存,但是当分配的内存大约为700MB时,我开始遇到问题。关于Cognex库文档的说明告诉我们/ LARGEADDRESSWARE不受支持。无论如何我想在win64上尝试迁移我的应用程序,但我该怎么办?

  • 我可以简单地使用64位处理器和Windows 64位处理器而无需重新编译仍然是32位应用程序以利用64位的应用程序吗?或者我应该重新编译我的应用程序?
  • 如果我不需要重新编译我的应用程序,可以将它与64位Congnex库链接吗?
  • 如果我必须重新编译我的应用程序,是否可以交叉编译应用程序,以便我的开发套件在32位PC上?

非常感谢每一位帮助!!

提前感谢

2 个答案:

答案 0 :(得分:2)

您可以在64位操作系统上运行32位应用程序,但它们以“WoW”(Windows上的窗口)运行。也就是说,它们仍然作为32位应用程序运行,具有32位应用程序的所有限制。要作为本机64位应用程序运行,它们必须是正确的64位应用程序。

托管(C#)代码不是特定于32/64平台的 - 它将被JIT编译成正确的代码类型,以便在主机PC上本机运行。但是,任何非托管代码(C ++,大多数第三方dll)都将预编译为32位或64位,因此您必须为主机PC使用正确版本的dll。

如果您尝试在64上运行您的程序但使用32位dll,当您尝试调用该DLL时,您的程序将因“错误的图像格式”错误而崩溃。

所以......要使你的程序真正成为64位,你需要构建一个链接到64位Congnex库的版本。

您可以从Visual Studio中定位任何类型的处理器,因此您不需要使用64位PC来开发64位应用程序(尽管您将使用64位PC来测试它!)

答案 1 :(得分:2)

Project + Properties,Build选项卡,Platform Target。应该设置为Any CPU,默认值。当您在64位版本的Windows上运行代码时,这将自动使您的代码运行64位。 JIT编译器负责处理它。

您必须在计算机上安装64位版本的.ocx才能使其正常工作。