我打算开始使用 Microsoft Visual Studio 2008 为 Windows 编写 64 位科学计算应用程序(信号处理)。就开发平台而言,我应该准备什么?
它与 32 位开发有何不同?我已经拥有的 32 位版本的移植问题可能是什么(好吧 - 这可能还为时过早......甚至在我开始编译之前)?
正如您可能已经猜到的那样,我正在寻找大致的方向。所有指针将不胜感激!:)
提前致谢..
我打算开始使用 Microsoft Visual Studio 2008 为 Windows 编写 64 位科学计算应用程序(信号处理)。就开发平台而言,我应该准备什么?
它与 32 位开发有何不同?我已经拥有的 32 位版本的移植问题可能是什么(好吧 - 这可能还为时过早......甚至在我开始编译之前)?
正如您可能已经猜到的那样,我正在寻找大致的方向。所有指针将不胜感激!:)
提前致谢..
安装 Visual Studio 2008 时,请注意勾选安装 64 位编译器和工具的复选框,因为它不是默认的。
然后,您可以参考这些文章以获取有关 32 到 64 位迁移的指南:
就托管代码(.NET)开发而言,32 位和 64 位的开发是相同的,只要您使用任何 CPU 选项编译代码即可。因此,您在机器上开发的所有代码都可以在 32 位和 64 位平台上正常运行。
如果你在做原生 C++ 开发,那么你可能需要根据特定的平台编译并编译两次(一个 inx86
和另一个 in x64
)。
最重要的区别是指针的大小。在 32 位上是 32 位,在 64 上是 64 位。int 和 long 保持不变。
首先,您必须知道 Windows 64 位可以在仿真模式WOW64下运行 64 位和 32 位,因此您必须决定是否允许这样做,或者您只对“纯”64 位感兴趣。
假设您想在两种模式下运行,您应该考虑以下几点:
如果您的应用程序使用注册表,您必须考虑像 HKLM 这样的少数键有两个条目。例如 HKEY_LOCAL_MACHINE\SOFTWARE 用于 64 位程序,HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node 用于 32 位程序。与此类似,如果您的应用程序使用 System32 文件夹,您现在必须处理两个文件夹:64 位的 System32 和 32 位的 SysWOW64。
如果您使用的是管理代码,您应该选择如何构建应用程序。如果它对非托管代码进行互操作调用,那么您需要构建它两次:一次将平台设置为 x64,另一次将平台设置为 x86。如果您没有调用非托管代码,则可以将其构建为 AnyCPU 平台。
显然更多的内存(每个指针占用 8 个字节而不是 4 个字节)
这个问题的所有答案都会对你有所帮助。