我开发了一个使用Congex视觉库(VPro)的C#应用程序。我的应用程序是在具有3GB RAM的32位Windows PC上使用Visual Studio 2008 Pro开发的。
在应用程序启动期间,我看到分配了大量内存。到目前为止一切都很好,但是当我添加许多视觉细节时,内存分配会增加,而应用程序的一部分(仅限Cognex OCX)会停止运行。其余的应用程序仍然可以工作(工作线程,com on socket ....)
我尽我所能来节省内存,但是当分配的内存大约为700MB时,我开始遇到问题。关于Cognex库文档的说明告诉我们/ LARGEADDRESSWARE不受支持。无论如何我想在win64上尝试迁移我的应用程序,但我该怎么办?
非常感谢每一位帮助!!
提前感谢
答案 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才能使其正常工作。