vc6编译stlport及常见问题

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 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/x-boot/p/3459899.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值