源码自己编译MFC和ATL库

源码自己编译MFC和ATL库

根据需要,需要重新编译MFC库。

预备条件:

 当前目录为  将(以2005为例)  C:\Program Files (x86)\Microsoft Visual Studio 8\VC 看做起步目录,后文等价为  $vcPath

1、将 $vcPath/bin 加入到 环境变量中(用后可删除),方便命令行执行 nmake 和 cl.exe 以及rc.exe 。

2、查阅 $vcPath/atlmfc/src 中 ,Readme.txt。主要命令是:

nmake  /f  atlmfc.mak   [ALL | ATL | MFC]      [CLEAN= ] [LIBNAME= ] [PLATFORM= ]


PLATFORM:选择范围为:INTEL, MIPS, ALPHA, AXP64, IA64, AMD64, or PPC.

其他则报错:makefile(286) : fatal error U1050: PLATFORM must be one of INTEL, MIPS, ALPHA, A
XP64, IA64, AMD64, or PPC.

3、调出命令行。执行 $vcPath/bin/vcvars32.bat x86  命令, 选择编译器的环境 为 vs2005 + x86。

4、执行到 $vcPath/Atlmfc/src 目录,执行2中的命令。根据需要适配参数。

nmake /f altmfc.mak ALL CLEAN=0 LIBNAME=MFC80_N_ PLATFORM=INTEL


5、执行成功后,

lib文件  在 $vcPath/atlmfc/lib中。

dll文件  在 $vcPath/atlmfc/src/mfc/你填入的平台文件夹内。

过程错误:

1NMAKE:fatal error U1077.“cl.exe” return code 0xc0000135

原因:在安装visual studio的时候没有勾选注册环境变量导致的。

解决:在系统环境变量中加入visual studio的安装路径:$vcPath\Bin, 及vs安装路径\Common7\IDE


2NMAKE:fatal error U1077. return code 0x2

原因:找不到代码文件中包含的头文件

解决:cmd下进入到vs安装路径\VC\Bin下,执行vcvars32,此时会执行vcvas32.bat自动为vs设置环境变量


3、NMAKE:fatal  error  U1077. return code 0x460

原因:你的工程中连接了一个lib文件,链接的时候却出现不能解析的外部符号。可能问题是你包含的lib是错的,或者有不兼容问题。我的问题就是后者,我的系统的32位的,但是链接了一个64位的lib.

解决:链接正确的lib


4、AssemblyInfo.cpp<78>: fatal error C1189: #eeor: Following information required to build private version

原因:程序集有不存在的目标,需要修改cpp文件。

$vcPath\atlmfc\src\mfcm\interfaces\AssemblyInfo.cpp

  添加:line20: #define BUILD_PREBUILT  //ifndef前面

  修改: line 75~77

         [assembly: AssemblyDelaySign(false)];

         [assembly: AssemblyKeyFile("")];

         [assembly: AssemblyKeyName("")];


 5、wfrmcmd.cpp<248>: fatal error C1189: #eeor: Following information required to build private version

$vcpath\atlmfc\src\mfcm\wfrmcmd.cpp<251>: ...

line: 231 #define BUILD_PREBUILT    //ifndef前面

line 245~247:

         [assembly: AssemblyDelaySign(false)];

         [assembly: AssemblyKeyFile("")];

         assembly: AssemblyKeyName("")];









猜你喜欢

转载自blog.csdn.net/mybachelor123/article/details/79045226