|
|
1
5
一般来说,我推荐的方法是进行单元测试。建立您的测试,以便它们都通过32位实现,然后开始在64位上构建和测试。值得特别关注代码中执行以下操作的任何部分:
除了测试尽可能多的代码路径,实际上没有捷径。这项工作有多容易将取决于代码编写的可移植性。你可能很幸运。。。 |
|
2
3
这 SDK article 列出64位Windows的注意事项。MSVC++的具体注意事项如下: listed here .一般来说,只需编译代码就能解决大多数问题。我不能评论你的具体情况,它不够详细。 |
|
|
3
2
我发现清除bug的最佳方法是审计代码中执行以下任何操作的代码,并在32位世界中修复它,然后启动端口。
对于确实需要执行DWORD/ptr操作的情况,请将类型更改为DWORD_ptr。 我见过很多代码使用CStringToPtr而不是CMap<>使用合适的类型。 所有这些东西可能都会在64位上编译(由于演员阵容,没有警告),然后就完蛋了。如果他们使用了正确的类型,并且没有强制转换,那么代码第一次就可以工作。 还要检查设置WndProc的任何子类代码——在64位Windows上设置WndProc需要一个不同的标志。 如果使用MFC,您还会(毫无帮助地)发现容器大小现在返回64位大小计数,而不是32位大小计数,这意味着您的32位/64位存档将被破坏。你必须边走边解决这个问题。我们用一些巧妙的技巧创建了自己的自定义MFC实现,允许我们在64位框上反序列化32位存档,反之亦然。 |