(一)
2011-06-30 16:35
Vs编译Gh0st修改的工作量还是挺大的,,已经是一个很大的跨越了,。,,而其后的版本已经商业化,所以使用VS2010编译Gh0st的时候,需要重新编译CJ60Lib。VS2010的自带安装的Windows , SDK,并配置环境了。 SDK 是Windows 2003的, Server 2008 了,其中发生的变化也是很大的。下面具体来操作一次。
先列一下几个主要下文件路径。,硬盘锁代码已经注释。
E:\Programming\VS2010\
E:\Programming\VS2010\\
E:\Programming\VS2010\\gh0st\CJ60Lib
E:\Programming\VS2010\\gh0st\CJ60Lib\CJ60Lib\
E:\Programming\VS2010\\gh0st\CJ60Lib\Lib
。一共有7个,有4个是已经不存在的项目了,直接删掉。
在灰色的项目上点右键–Remove,或直接按Del键删除。
直接在CJ60StaticLib项目上点右键— Project Only —- Build Only CJ60StaticLib或者是 Rebuild Only CJ60StaticLib。以后说编译某个项目也是这样,不再重复说明了。
首先修改程序配置,让默认的字符都为ANSI字符,VS2010默认为宽字符Unicode版。
项目—右键—属性—C/C++—Language—WChar_t—No,如图所示:
修改编译后,对照错误,再来一个一个的修改。
1>
1> _WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see )
1>e:\programming\vs2010\\gh0st\cj60lib\cj60lib\(51): fatal error C1083: 无法打开包括文件:“..\src\”: No such file or directory
双击这个错误,定位到 中的
#include <..\src\>
把这句话改成
#include <..\src\mfc\>
接着修改warning C4819警告
warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
这个警告至需要双击打开该文件,然后保存就可以了。
\gh0st\cj60lib\cj60lib\(117): error C2065: “p”: 未声明的标识符
这是因为VS更符号C++标准,临时变量的作用域已经修正了,在Gh0st里,可以看到很多这样的代码。只要把在for或if里面定义的变量,放到for或if之前定义就好了。
这里的代码是:
for (CSubclassWnd* p = (m_hWnd); p; p=p->m_pNext)
修改为
CSubclassWnd* p = NULL;
for (p = (m_hWnd); p; p=p->m_pNext)
后面的i也是一样修改。
\gh0st\cj60lib\cj60lib\(803): error C2065: “i”: 未声明的标识符
for (i=0; i < nFound; i++) {
这里的i,是在前面的
for (UINT i=0; i< n
VC6到VS2010迁移所有问题的解决方法(CJ60示例) 来自淘豆网www.taodocs.com转载请标明出处.