x_boot

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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 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.

3.编译运行
cmd下路径切换到stlport的build\lib下,执行以下命令
nmake /fmsvc.mak
这条命令为编译,执行时间很长。
完成后运行以下指令
nmake /fmsvc.mak install
这条命令的主要功能是copy

4.配置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 builds

6.其他,
此外还有可能会遇到如下的问题:
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  x_boot  阅读(378)  评论(0编辑  收藏  举报