本文主要介绍了如何在Windows 7 64bit和Visual Studio 2010下生成64位程序。
1). 新建一个Visual Studio Win32 Console项目,命名为test x64,test x64.cpp代码后附。这里我们还将比较32位与64位程序的浮点运算速度,以及他们调用dll库的异同。
2). 在工具栏上单击"Solution Platforms",选择"Configuration Manager...",然后在"Active solution platform"中选择"<New...>"
此步骤可详见
http://msdn.microsoft.com/zh-cn/library/ff407621.aspx
3). 在"New Solution Platform"对话框中选择"x64"平台。单击确定。
4). 回到IDE界面上了,注意到现在的平台已经是x64了。
5). 编译,链接,分别生成32位与64位程序。
6). 按F5,开始调试,在output对话框中,我们可以看到32位和64位程序加载的dll不同。32位程序从SysWOW64中加载dll。
而64位程序从System32中加载dll。
System32 和SysWOW64的异同可参见如下链接
http://wenku.baidu.com/view/24dde1ec0975f46527d3e14c .html
7). 本次试验中,32位和64位程序运行时间基本相同,速度快慢差异不大。
test x64.cpp代码
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#pragma comment(lib, "winmm")
using namespace std;
LARGE_INTEGER tickspersecond, tick, time_test;
int TimeCheck();
int _tmain(int argc, _TCHAR* argv[])
{
cout << "Hello world!" << endl;
double sum = 1;
double temp = 0, max_iter = 500000000;
double factor_sum = 1;
unsigned long index = 1, begin = 0, end = 0;
begin = TimeCheck();
for (int i = 1; i < max_iter; ++i)
{
factor_sum *= i;
temp = 1 / factor_sum;
sum += temp;
}
end = TimeCheck();
cout << "Done in " << end - begin << " mill seconds!" << endl;
cin.get();
return 0;
}
int TimeCheck()
{
QueryPerformanceFrequenc
y(&tickspersecond);
QueryPerformanceCounter(&tick);
time_test.QuadPart = 1000 * tick.QuadPart/tickspersecond.QuadPart;
return ((int)time_test.QuadPart);
}
注:64位进程调用32位dll的方法
http://www.cnblogs.com/mazhenyu/archive/2007/06/28/798710.html
http://wenku.baidu.com/view/24dde1ec0975f46527d3e14c
test x64.cpp代码
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#pragma comment(lib, "winmm")
using namespace std;
LARGE_INTEGER tickspersecond, tick, time_test;
int TimeCheck();
int _tmain(int argc, _TCHAR* argv[])
{
}
int TimeCheck()
{
}
注:64位进程调用32位dll的方法
http://www.cnblogs.com/mazhenyu/archive/2007/06/28/798710.html