DuiLib VS2008项目移到VS2005上

来源:互联网 发布:我欲封天进阶数据 编辑:程序博客网 时间:2024/05/26 19:17

新开发一个基于DirectUI的新版本客户端,参照的DuiLib源码是从GitHub上拿来的,是用VS2008开发的项目。

项目地址   https://github.com/duilib/duilib


第一时间的想法是直接用VS2008进行开发,由于公司之前在用的客户端是VS2005下的,于是想将一些基础的功能模块通过DLL方式进行调用。


一段时间后,出现了个问题。VS2008的exe在调用VS2005生成的DLL时,如果用STL容器进行传参,在这容器析构的时候将会抛出异常。花了些时间找到了原因。

http://blog.csdn.net/htt9931/article/details/8652962


这里也得出了一点教训,STL切忌在DLL间传递,特别是exe和dll 的VC版本不一样的时候。


为减少工作量之后将DuiLib从VS2008移植到VS2005。


<1>用记事本打开解决方案文件“解决方案名.sln”,然后修改最上面两行为如下代码:

Microsoft Visual Studio Solution File, Format Version 9.00 # Visual Studio 2005

<1>用记事本打开每个项目的“项目名.vcproj”,然后修改第四行为如下代码:

Version="8.00"


这样VS2005就能打开VS2008的工程进行编译了。


Duilib的工程在05下编译,报错_RPC__out__RPC__in 未定义的错误。


解决方案为:

1、下载WDK      点击打开链接     下载链接版本为7.1.0

2、安装WDK

3、VS2005的配置   工具--》选项--》项目和解决方案--》VC++目录



再次进行编译,发现报了几个无法解析的错误。


无法解析的外部符号“unsigned int (__stdcall*ATL::g_pfnGetThreadACP)(void)”(?g_pfnGetThreadACP@ATL@@3P6GIXZA)


解决方案为

向项目依赖项中添加 atlsd.lib

具体操作方法

1、添加文件引用的lib静态库路径  工程--》属性--》配置属性--》链接器--》常规--》附加库目录

2、在工程中添加引用的lib文件名    工程--》属性--》配置属性--》链接器--》输入--》附加依赖项



这样,VS2008的Duilib工程就能在VS2005下编译运行了。

0 0