STLport-4.5.3在Visual C++6.0环境中的编译和配置

参考:http://jjhou.csdn.net/myan-stlport.htm 1.目录介绍 本文解压缩STLport 在目录D:/STLport-4.5.3/下 STLport-4.5.3文件夹里的内容: README - 自述文件 INSTALL - 安装说明 doc - STLPort的发行文档 etc - 杂七杂八的一些文件 src - 源文件和编译工程 stlport - STLport头文件夹 test - 测试目录 test/regression - 回归测试,使用STLPort库 test/eh - 使用STLPort进行异常处理测试 lib - 编译后将产生此文件夹,这是STLport链接库目录 2.修改VCVARS32.BAT 到C:/Program Files/Microsoft Visual Studio/VC98/Bin/中,利用你顺手的文本编辑器修改文件VCVARS32.BAT 其中有两行 set INCLUDE=%MSVCDir%/ATL/INCLUDE;%MSVCDir%/INCLUDE;%MSVCDir%/MFC/INCLUDE;%INCLUDE% set LIB=%MSVCDir%/LIB;%MSVCDir%/MFC/LIB;%LIB% 改成: set INCLUDE=D:/STLport-4.5.3/stlport;%MSVCDir%/ATL/INCLUDE;%MSVCDir%/INCLUDE;/ %MSVCDir%/MFC/INCLUDE;%INCLUDE% set LIB=D:/STLport-4.5.3/lib;%MSVCDir%/LIB;%MSVCDir%/MFC/LIB;%LIB% 上面为了方面阅读用 "/" 符号将过长的一行折成两行,实际文件中还是一行。 (D:/STLport-4.5.3/lib目前还不存在,但不用着急,编译完stlport就有了) 修改完毕後保存,然後执行命令vcvars32。一切顺利的话应该给出一行结果: Setting environment for using Microsoft Visual C++ tools. 3.进入命令提示符下设置VC6.0环境变量 运行VCVARS32.BAT设置VC6.0的环境变量,设置完后不要关闭此命令提示符窗口 VCVARS32.BAT所在目录:C:/Program Files/Microsoft Visual Studio/VC98/Bin/VCVARS32.BAT 4.编译stlport 进入"D:/STLport-4.5.3/src"目录(只编译某个版本见install文件说明) copy vc6.mak makefile nmake clean all 屏幕反反复复地显示似乎是同样的内容,请务必保持耐心,这实际上是在以不同编译开关建立不同性质的目标库。 经过一段漫长的编译之後, 终於结束了。 现在你再执行命令 nmake install OK,大功告成。 在Win32平台上,"install"做了下面的工作 1 STLPort所产生的动态库DLL被复制到system32(NT)或者system(98),目录下。 2 stlport子目录被复制到vc编译器的include目录下。 3 .lib文件被复制到vc编译器的lib目录下。 5.然后就可以进行测试了 a.编译stl_test 进入目录"D:/STLport-4.5.3/stlport/test/regression" nmake -f vc6.mak 编译完运行stl_test.exe b.编译eh_test 进入目录"D:/STLport-4.5.3/stlport/test/eh" nmake -f vc6.mak 编译完运行eh_test.exe(时间比较久) 6.测试VC6.0是否使用了STLPort 为了测试各种链接库的使用,nmake install做的三步操作全部撤销。 删除VC编译器include目录下的stlport头文件 删除VC编译器lib目录下的stlport头文件 删除system32下的stlport_vc6_stldebug45.dll和stlport_vc645.dll 测试程序issgistl.cpp。见11.测试程序代码issgistl.cpp VC6.0下直接编译issgistl.cpp。 会提示:fatal error C1083: Cannot open include file: 'rope': No such file or directory 这是工程没有包含stlsport。按步骤7的方式 include stlport的头文件 7.配置工程包含stlport的头文件 修改工程选项:Project->Settings...->C/C++中,Category选择Preprocessor, 在Additional include directories中添加:D:/STLport-4.5.3/stlport 添加好后再次编译,还有错误! LINK : fatal error LNK1104: cannot open file "stlport_vc6_static.lib" 提示没找到stlport的lib库,奇怪?我们也没强制载入stlport_vc6_static.lib库阿? install中说到: [ Visual C++ specific ] For VC++, you do not have to specify "stlport-msvc-XXX.lib" explicitly, as it is being choosen and forced to link automatically by "#pragma"'s in stlport/config/stl_select_lib.h. 原来stlport/config/stl_select_lib.h文件中自动载入了lib库。 但如何控制是Realse版还是Debug版?静态链接库还是动态链接库? 看一下stl_select_lib.h,以下四种方式通过在工程选项:Project->Settings...->C/C++中,Category选择General, 两个宏定义 _STLP_DEBUG 和 _STLP_USE_DECLSPEC 是否添加到 Preprocessor definitions 来控制调用何种链接库 动态链接库的Debug版 stlport_vc6_stldebug.lib 添加 _STLP_DEBUG 和 _STLP_USE_DECLSPEC 动态链接库的Release版 stlport_vc6.lib 添加 _STLP_USE_DECLSPEC 静态链接库的Debug版 stlport_vc6_stldebug_static.lib 添加 _STLP_DEBUG 静态链接库的Release版 stlport_vc6_static.lib 什么也不添加 好了,都清楚了。设置成 动态链接库的Debug版 的模式 把 stlport_vc6_stldebug.lib 拷贝到工程根目录。 或者工程中添加lib路径,修改工程选项:Project->Settings...->Link中,Category选择Input, 在Additional library path中添加:D:/STLport-4.5.3/stlport 再编译,没有错误。运行,提示没有找到stlport_vc6_stldebug45.dll。 把stlport_vc6_stldebug45.dll拷贝到工程的Debug目录下。编译,运行。OK,熟悉的"Hello World"出来了。 8.配置VC6.0开发环境的stlport(此项可略过,在每个工程中单独配置) 打开VC6,在Tools->Options...->Directories中 添加include files路径: "D:/STLport-4.5.3/stlport",移到最上一条。 添加library files路径: "D:/STLport-4.5.3/lib",移到最上一条。 把stlport_vc6_stldebug45.dll和stlport_vc645.dll拷贝到system32目录下 这样以后就不用每个工程都做 步骤7的操作了。 9.SGI STL特性与VC6.0缺省设置的不同之处 找一个使用了SGI STL特性的程序,比如使用rope, slist, hash_set, hash_map等容器的程序来编译。 注意,编译时务必使用下面的格式: cl /GX /MT program.cpp a./GX:SGI STL中大量使用try..throw..catch,VC缺省情况下不支持此语法,/GX是要求VC++ Compiler打开对异常处理语法的支持。 b./MT:/MT则是要求VC的linker本程序obj文件与libcmt.lib连接在一起,因为SGI STL是thread-safe的,必须以multi-thread形式运行。 c.若要在图形界面中使用SGI STL,可在VC中调整Project-->Setting(Alt+F7), 设置编译选项, 注意使用/MT和/GX。见步骤10 并且引入选项/I "D:/STLport-4.5.3.VC6.0/stlport"及/libpath:"D:/STLport-4.5.3.VC6.0/lib"。见步骤7 详情见10.配置工程的stlport。 10.配置工程的stlport线程方式 修改工程选项:Project->Settings...->C/C++中,Category选择Code Generation。 然后在use run-time library中选择Debug Multithreaded。 (如果是release版本,选择Multithreaded) (如果想用动态链接,则要先有编译动态链接版本的STLport,再在这儿选择相应的DLL) 11.测试程序代码issgistl.cpp //issgistl.cpp #include #include using namespace std; int main() { // crope就是容纳char类型字符的rope容器 crope bigstr1("Hello"); crope bigstr2("World"); crope story = bigstr1 + " " + bigstr2; cout << story << endl; system("pause"); return 0; } 原文连接: http://blog.csdn.net/pocketmatrix/archive/2008/11/01/3202600.aspx 如果作者认为侵权,请及时告知我,谢谢! 本文来自CSDN博客,转载请标明出处:参考:http://jjhou.csdn.net/myan-stlport.htm 1.目录介绍 本文解压缩STLport 在目录D:/STLport-4.5.3/下 STLport-4.5.3文件夹里的内容: README - 自述文件 INSTALL - 安装说明 doc - STLPort的发行文档 etc - 杂七杂八的一些文件 src - 源文件和编译工程 stlport - STLport头文件夹 test - 测试目录 test/regression - 回归测试,使用STLPort库 test/eh - 使用STLPort进行异常处理测试 lib - 编译后将产生此文件夹,这是STLport链接库目录 2.修改VCVARS32.BAT 到C:/Program Files/Microsoft Visual Studio/VC98/Bin/中,利用你顺手的文本编辑器修改文件VCVARS32.BAT 其中有两行 set INCLUDE=%MSVCDir%/ATL/INCLUDE;%MSVCDir%/INCLUDE;%MSVCDir%/MFC/INCLUDE;%INCLUDE% set LIB=%MSVCDir%/LIB;%MSVCDir%/MFC/LIB;%LIB% 改成: set INCLUDE=D:/STLport-4.5.3/stlport;%MSVCDir%/ATL/INCLUDE;%MSVCDir%/INCLUDE;/ %MSVCDir%/MFC/INCLUDE;%INCLUDE% set LIB=D:/STLport-4.5.3/lib;%MSVCDir%/LIB;%MSVCDir%/MFC/LIB;%LIB% 上面为了方面阅读用 "/" 符号将过长的一行折成两行,实际文件中还是一行。 (D:/STLport-4.5.3/lib目前还不存在,但不用着急,编译完stlport就有了) 修改完毕後保存,然後执行命令vcvars32。一切顺利的话应该给出一行结果: Setting environment for using Microsoft Visual C++ tools. 3.进入命令提示符下设置VC6.0环境变量 运行VCVARS32.BAT设置VC6.0的环境变量,设置完后不要关闭此命令提示符窗口 VCVARS32.BAT所在目录:C:/Program Files/Microsoft Visual Studio/VC98/Bin/VCVARS32.BAT 4.编译stlport 进入"D:/STLport-4.5.3/src"目录(只编译某个版本见install文件说明) copy vc6.mak makefile nmake clean all 屏幕反反复复地显示似乎是同样的内容,请务必保持耐心,这实际上是在以不同编译开关建立不同性质的目标库。 经过一段漫长的编译之後, 终於结束了。 现在你再执行命令 nmake install OK,大功告成。 在Win32平台上,"install"做了下面的工作 1 STLPort所产生的动态库DLL被复制到system32(NT)或者system(98),目录下。 2 stlport子目录被复制到vc编译器的include目录下。 3 .lib文件被复制到vc编译器的lib目录下。 5.然后就可以进行测试了 a.编译stl_test 进入目录"D:/STLport-4.5.3/stlport/test/regression" nmake -f vc6.mak 编译完运行stl_test.exe b.编译eh_test 进入目录"D:/STLport-4.5.3/stlport/test/eh" nmake -f vc6.mak 编译完运行eh_test.exe(时间比较久) 6.测试VC6.0是否使用了STLPort 为了测试各种链接库的使用,nmake install做的三步操作全部撤销。 删除VC编译器include目录下的stlport头文件 删除VC编译器lib目录下的stlport头文件 删除system32下的stlport_vc6_stldebug45.dll和stlport_vc645.dll 测试程序issgistl.cpp。见11.测试程序代码issgistl.cpp VC6.0下直接编译issgistl.cpp。 会提示:fatal error C1083: Cannot open include file: 'rope': No such file or directory 这是工程没有包含stlsport。按步骤7的方式 include stlport的头文件 7.配置工程包含stlport的头文件 修改工程选项:Project->Settings...->C/C++中,Category选择Preprocessor, 在Additional include directories中添加:D:/STLport-4.5.3/stlport 添加好后再次编译,还有错误! LINK : fatal error LNK1104: cannot open file "stlport_vc6_static.lib" 提示没找到stlport的lib库,奇怪?我们也没强制载入stlport_vc6_static.lib库阿? install中说到: [ Visual C++ specific ] For VC++, you do not have to specify "stlport-msvc-XXX.lib" explicitly, as it is being choosen and forced to link automatically by "#pragma"'s in stlport/config/stl_select_lib.h. 原来stlport/config/stl_select_lib.h文件中自动载入了lib库。 但如何控制是Realse版还是Debug版?静态链接库还是动态链接库? 看一下stl_select_lib.h,以下四种方式通过在工程选项:Project->Settings...->C/C++中,Category选择General, 两个宏定义 _STLP_DEBUG 和 _STLP_USE_DECLSPEC 是否添加到 Preprocessor definitions 来控制调用何种链接库 动态链接库的Debug版 stlport_vc6_stldebug.lib 添加 _STLP_DEBUG 和 _STLP_USE_DECLSPEC 动态链接库的Release版 stlport_vc6.lib 添加 _STLP_USE_DECLSPEC 静态链接库的Debug版 stlport_vc6_stldebug_static.lib 添加 _STLP_DEBUG 静态链接库的Release版 stlport_vc6_static.lib 什么也不添加 好了,都清楚了。设置成 动态链接库的Debug版 的模式 把 stlport_vc6_stldebug.lib 拷贝到工程根目录。 或者工程中添加lib路径,修改工程选项:Project->Settings...->Link中,Category选择Input, 在Additional library path中添加:D:/STLport-4.5.3/stlport 再编译,没有错误。运行,提示没有找到stlport_vc6_stldebug45.dll。 把stlport_vc6_stldebug45.dll拷贝到工程的Debug目录下。编译,运行。OK,熟悉的"Hello World"出来了。 8.配置VC6.0开发环境的stlport(此项可略过,在每个工程中单独配置) 打开VC6,在Tools->Options...->Directories中 添加include files路径: "D:/STLport-4.5.3/stlport",移到最上一条。 添加library files路径: "D:/STLport-4.5.3/lib",移到最上一条。 把stlport_vc6_stldebug45.dll和stlport_vc645.dll拷贝到system32目录下 这样以后就不用每个工程都做 步骤7的操作了。 9.SGI STL特性与VC6.0缺省设置的不同之处 找一个使用了SGI STL特性的程序,比如使用rope, slist, hash_set, hash_map等容器的程序来编译。 注意,编译时务必使用下面的格式: cl /GX /MT program.cpp a./GX:SGI STL中大量使用try..throw..catch,VC缺省情况下不支持此语法,/GX是要求VC++ Compiler打开对异常处理语法的支持。 b./MT:/MT则是要求VC的linker本程序obj文件与libcmt.lib连接在一起,因为SGI STL是thread-safe的,必须以multi-thread形式运行。 c.若要在图形界面中使用SGI STL,可在VC中调整Project-->Setting(Alt+F7), 设置编译选项, 注意使用/MT和/GX。见步骤10 并且引入选项/I "D:/STLport-4.5.3.VC6.0/stlport"及/libpath:"D:/STLport-4.5.3.VC6.0/lib"。见步骤7 详情见10.配置工程的stlport。 10.配置工程的stlport线程方式 修改工程选项:Project->Settings...->C/C++中,Category选择Code Generation。 然后在use run-time library中选择Debug Multithreaded。 (如果是release版本,选择Multithreaded) (如果想用动态链接,则要先有编译动态链接版本的STLport,再在这儿选择相应的DLL) 11.测试程序代码issgistl.cpp //issgistl.cpp #include #include using namespace std; int main() { // crope就是容纳char类型字符的rope容器 crope bigstr1("Hello"); crope bigstr2("World"); crope story = bigstr1 + " " + bigstr2; cout << story << endl; system("pause"); return 0; } 原文连接: http://blog.csdn.net/sky04/archive/2009/05/05/4152836.aspx 如果作者认为侵权,请及时告知我,谢谢! 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/sky04/archive/2009/05/05/4152836.aspx

你可能感兴趣的:(STLport-4.5.3在Visual C++6.0环境中的编译和配置)