vc6下编译安装stlport:
下载stlport的源码,将其解压到任意文件夹下,记下这个文件路径
(我的为D:\sdk\STLport-5.2.1\) 1.配置编译器环境变量在\Miscrosoft Visual Studio\VC98\BIN\下找到文件VCVAR32.BAT,该文件是注册环境变量的。在其中把stlport的include和lib路径给配置上。右键-》编辑
在文件结尾处有如下两行set INCLUDE=%MSVCDir%\ATL\INCLUDE;%MSVCDir%\INCLUDE;%MSVCDir%\MFC\INCLUDE;%INCLUDE%set LIB=%MSVCDir%\LIB;%MSVCDir%\MFC\LIB;%LIB%将源码的include和lib添加到路径中,我的环境如下:set INCLUDE=D:\sdk\STLport-5.2.1\stlport;%MSVCDir%\ATL\INCLUDE;%MSVCDir%\INCLUDE;%MSVCDir%\MFC\INCLUDE;%INCLUDE%set LIB=D:\sdk\STLport-5.2.1\lib;%MSVCDir%\LIB;%MSVCDir%\MFC\LIB;%LIB%保存。
2.配置执行环境
然后执行VCVARS32.bat,(可以直接双击执行,也可以在cmd中执行,如果系统为win7推荐以管理员身份运行)打开cmd,路径切换到stlport的根目录,执行命令:
configure msvc6.正确的话返回值为:STLport Configuration Tool for WindowsSetting compiler: Microsoft Visual C++ 6.0Setting platform: Windows XPDone configuring STLport.Go to build/lib folder and type "nmake clean install" to build andinstall STLport to the "lib" and "bin" folders.Go to build/test/unit folder and type nmake clean install tobuild unit tests and install them in bin folder.3.编译运行
cmd下路径切换到stlport的build\lib下,执行以下命令nmake /fmsvc.mak这条命令为编译,执行时间很长。完成后运行以下指令nmake /fmsvc.mak install这条命令的主要功能是copy4.配置VC
A.TOOL-》Options-》Directories中分别增加Include和lib,并将其移至顶端。5.使用,
配置完lib和include后,新建工程测试,在运行时会弹出对话框“无法启动此程序,因为计算机中丢失stlportd.5.2.dll。尝试重新安装该程序以解决此问题。引起这个问题的原因是,默认使用了利用动态库的方式。下面介绍stlport的两种调用方法a.动态库源码根路径的bin目录,里面是刚才我们编译出来的dll库。将其中的stlportd.3.2.dllcopy到C盘的system32目录下,Project->settings->C/C++,Category中选:Code Generation : 在Use run-time library中选“Debug Mulithreaded DLL”(Release版选“Mulithreaded”)如果当前程序支持MFC的话,还需要到Project->settings->General,Microsoft Foundation Class:中选择Use MFC in a Shared DLL 否则会在编译期间报一堆未识别符号如:__argv,__argc等等b.静态库
静态库方式不用把dllcopy到system32下。Project->settings->C/C++,Category中选:Code Generation : 在Use run-time library中选“Debug Mulithreaded”(Release版选“Mulithreaded”)如果当前程序支持MFC的话,还需要到Project->settings->General,Microsoft Foundation Class:中选择Use MFC in a Static Library 否则编译期会报错#error : Please use the /MD switch for _AFXDLL builds6.其他,
此外还有可能会遇到如下的问题:error C2733: second C linkage of overloaded function 'InterlockedIncrement' not allowed这种情况是stl跟PSDK的兼容性冲突了。不过stl已经有了处理措施
打开stl源码目录\stlport\stl\config\user_config.h在其中搜_STLP_USE_MFC和_STLP_NEW_PLATFORM_SDK发现这两个宏是注释状态,将其注释起开,问题解决。 posted on 2013-12-05 16:47 阅读( ...) 评论( ...)