正文

【转】VC6.0+icc编译STLPort5.22009-01-06 12:48:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/lym51/40190.html

分享到:

帅得不敢出门
C++哈哈堂          31843264
编程`灌水`交流    24372952
C++爱好者灌水天堂   3503799
VC6.0(sp6)+Intel c++ Compiler For Windows v9.0.025 Final编译STLPort5.2.1

转载请保留此信息
*/


编译前的准备:请确保 环境变量 path中有D:\vc6.0\MSDev98\Bin 原因及如何设置后面会说到(没设置的可先看后面)
1. 到www.stlport.org下载STLPort。我下载的是stlport5.2.1
   (http://sourceforge.net/project/showfiles.php?group_id=146814)
2. 把下载的stlport压缩包解压,我假设解压到D:\VC98\STLport(其子目录是src,doc,stlport等目录)
3. 编译stlport
(1)编译d:\VC98\bin\vcvars32.bat
给INCLUDE 变量 加上 %MSVCDir%\STLport\stlport
给LIB变量加上 %MSVCDir%\STLport\lib
改后应为
set INCLUDE=%MSVCDir%\STLport\stlport;%MSVCDir%\ATL\INCLUDE;%MSVCDir%\INCLUDE;%MSVCDir%\MFC\INCLUDE;%INCLUDE%
set LIB=%MSVCDir%\STLport\lib;%MSVCDir%\LIB;%MSVCDir%\MFC\LIB;%LIB%

开启一个console窗口, 运行 d:\VC98\bin\vcvars32.bat
如果成功会提示:
Setting environment for using Microsoft Visual C++ tools.
(2)CD到STLport目录下执行如下命令:
D:\VC98\STLport>configure msvc6  
显示如下:
STLport Configuration Tool for Windows

Setting compiler: Microsoft Visual C++ 6.0

Setting platform: Windows XP

Done configuring STLport.

Go to build/lib folder and type "nmake clean install" to build  and
install STLport to the "lib" and "bin" folders.
Go to build/test/unit folder and type nmake clean install to
build unit tests and install them in bin folder.

按照提示在CMD下输出如下命令:
D:\VC98\STLport>cd build

D:\VC98\STLport\build>cd lib

D:\VC98\STLport\build\lib>nmake clean install
结果我的电脑出现    "没有找到mspdb60.dll,因此这个应用程序未能启动"  错误
解决方法有两种:
第一种:Microsoft Visual Studio\Common\MSDev98\Bin中去找mspdb60.dll,然后把它复制到system32里就ok了!
第二种:就是 环境变量 path中添加D:\vc6.0\MSDev98\Bin  注释再编译
再编译
如果是第一种方法后面又会出现问题
        rc /I../../stlport /D "COMP=vc6" /D "BUILD_INFOS=/nologo /W4 /GX /GR /Zm
800  /MD /Zi /O2" /fo obj\vc6\shared\stlport.res ../../src\stlport.rc
'rc' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
NMAKE : fatal error U1077: 'rc' : return code '0x1'
Stop.

于是搜索rc.exe 在D:\vc6.0\MSDev98\Bin 找到了它
设置环境变量
右键我的电脑--属性--高级---环境变量---登录用户名的用户变量---变量path的值上添加 ;D:\vc6.0\MSDev98\Bin 
--确定--确定
注销下再编译  编译成功 STLport下生成了bin 与lib文件夹

可见这两个问题都是由于环境变量不对导致的,所以编译前的准备是很重要的

4. 配置vc
    点击vc的tools-options-Directories,
    选择Include files,加入D:\VC98\STLport\stlport,并调到最前面
    选择Library files,加入D:\VC98\STLport\LIB,并调到最前面
将bin\目录下的三个*.dll文件拷贝到windows\system32\目录下

注意,编译时务必使用下面的格式:
cl /GX /MT program.cpp
SGI STL中大量使用try..throw..catch,VC缺省情况下不支持此语法,
/GX是要求VC++ Compiler打开对异常处理语法的支持。/MT则是要求VC的linker本程序obj文件与libcmt.lib连接在一起,
因为SGI STL是thread-safe的,必须以multi-thread形式运行。
若要在图形界面中使用,则:
project-->setting(Alt+F7)->c/c++  Use run-time library Debug Multithreaded
如果编译程序的时候出现:
Fatal error cannot open "stlportd_static..lib" 就把stlportd_static.lib重命名为stlportd_static..lib
至此, vc6.0编译stlport完成

如果是icc编译 (我下的是Intel C++ Compiler For Windows v9.0.025 Final安装在D:\ICC\下)
注意:安装完icc后 一定要设置好icc的环境变量 否则编译过程不断出现的错误会让你很郁闷的,我为了这个问题搞了2
天时间.比如连接的时候会出现 can not open file libmmd.lib的问题
安装完后运行  开始--Intel(R) Software Development Tools--Intel(R) C++ Compiler 9.0-
--build Environment for IA-32 applications 
给用户变量  变量include值添加: ;D:\ICC\Intel\Compiler\C++\9.0\IA32\Include
变量lib添加: ;D:\ICC\Intel\Compiler\C++\9.0\IA32\Lib
变量path添加: ;D:\ICC\Intel\Compiler\C++\9.0\IA32\Bin
以上这几个值,装在不同目录自然不同,大家自行修改下

剩下的就简单了,跟VC6编译大部分一样,只是第3.(2)步命令应该修改如下:
D:\VC98\STLport>configure icl
显示如下:
STLport Configuration Tool for Windows

Setting compiler: Intel C++ Compiler

Setting platform: Windows XP

Done configuring STLport.

Go to build/lib folder and type "nmake clean install" to build  and
install STLport to the "lib" and "bin" folders.
Go to build/test/unit folder and type nmake clean install to
build unit tests and install them in bin folder.
其他同上了

如果同时用VC9和ICL编译的STLPort,两套库的名字是一样的,会冲突。解决方法:
- 找到STLPort目录下的_auto_link.h
我的是在D:\VC98\STLport\stlport\stl\config\下
- 将下面一行
#  define _STLP_STLPORT_LIB "stlport"_STLP_LIB_OPTIM_MODE""_STLP_LIB_TYPE""_STLP_LIB_MOTIF"."_STLP_VERSION_STR".lib"
替换为
#  if defined (__ICL)
#     define _STLP_STLPORT_LIB_PREFIX "icl_"
#  else
#     define _STLP_STLPORT_LIB_PREFIX ""
#  endif

#  define _STLP_STLPORT_LIB _STLP_STLPORT_LIB_PREFIX"stlport"_STLP_LIB_OPTIM_MODE""_STLP_LIB_TYPE""_STLP_LIB_MOTIF"."_STLP_VERSION_STR".lib"
然后将ICL编译出的几个lib文件前加上“icl_”前缀,即:
icl_stlport_static.5.1.lib  如果编译器出现can not open icl_stlportd_static..lib那么就把icl_stlportd_static.lib
icl_stlportd_static..lib 就是多加个.号
如果生成的lib与dll分别在lib,bin的icl子目录下,就分别提取出来放在lib ,bin下(icl子目录没有用,可以删掉)
完成...

阅读(7676) | 评论(1)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册