2010-03-20 45 views
2

我开发了一个使用Congex视觉库(VPro)的C#应用​​程序。我的应用程序是使用Visual Studio 2008 Pro在具有3GB RAM的32位Windows PC上开发的。图像分析和64位操作系统

在应用程序启动期间,我看到分配了大量内存。目前为止这么好,但是当我添加了许多和许多视觉阐述时,内存分配增加了,应用程序的一部分(只有康耐视OCX)停止运行。其余的应用程序仍然工作(工作线程,COM插座....)

我尽我所能来节省内存,但当分配的内存大约700MB时,我开始有问题。关于康耐视库文档的说明表明不支持/ LARGEADDRESSWARE。无论如何,我想在win64上尝试迁移我的应用程序,但我该怎么做?

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

每一个帮助将非常感谢!

预先感谢

回答

2

您可以运行在64位操作系统的32个应用程序,但他们在“魔兽世界”(Windows在Windows)上运行。也就是说,他们仍然以32位应用程序的形式运行,并具有32位应用程序的所有限制。要作为本机64位应用程序运行,它们必须是适当的64位应用程序。

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

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

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

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

+0

感谢您的明确答案。因此,现在最困难的一步是确定哪些体系结构,我必须重新编译我的设备的C++部分。 我想我必须设置Properties-> Linker-> Advaced-> Targer Machine为其中一个体系结构。我有一个英特尔酷睿2双核E6400,你知道什么是最好的选择? Prehaps“/ MACHINEx64? – picciopiccio 2010-03-22 14:14:45

+0

是的,没错。如果您的目标是32位,请使用/ MACHINE:x86。对于64位Intel/AMD,请使用/ MACHINE:x64。在按钮栏中有一个下拉列表(通常包含任何CPU或Win32)。把它放下并选择配置管理器,你可以为x64添加一个新的配置(从Debug或Release中复制它作为approriate,并为64位设置合适的链接器选项) - 然后你可以在32/64位版本之间切换通过在调试/发布之间进行切换来降低组合框。 – 2010-03-22 18:27:40

2

项目+属性,生成选项卡,平台目标。这应该设置为任何CPU,默认值。当您在64位版本的Windows上运行代码时,这会自动使您的代码运行64位。 JIT编译器负责它。

您必须在机器上安装64位版本的.ocx才能完成此工作。

相关问题