转:VS2005 & VS2008 对C++转换中问题总结

1、转换VS6.0

学习 ATL,看到 http://www.codeproject.com/shell/shellextguide1.asp,测试了一下,发现 VC6 编译通过,VC8 在 COM_INTERFACE_ENTRY(IContextMenu) 处提示错误:no GUID has been associated with this object

其实上面 URL 的文章,已经给出解决方案了,就是升级 Platform SDK,并把 $(VCInstallDir)PlatformSDK\include 放在 Include 目录第一位,或者不放第一也至少要在 ($VCInstallDir)include 前面!

我自己发现的一个办法是,加一句定义:

struct __declspec(uuid("000214E4-0000-0000-C000-000000000046")) IContextMenu;

还有第三个解决办法:不要用 COM_INTERFACE_ENTRY(IContextMenu),换成 COM_INTERFACE_ENTRY_IID(IID_IContextMenu, IContextMenu),同时要 #include <shlguid.h>

当然第一种方法是最好的,在写 WTL 程序时也要求这样做,不过要是暂时没条件升级 Platform SDK,倒是可以先用用另外两个办法。

 

2. vs2008->vs2005 (本人试验过,确实有效)

VS2008 .sln .vcproj 转VS2005

编译个WowModelViewer就不用装VS2008了。这样子啊!以前我咋就没想到呢?

.sln

Microsoft Visual Studio Solution File
, Format Version 10.00
# Visual Studio
2008

修改为

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

.vcproj

<<>="Visual C++"Version="9.00"Name="wowmodelview"ProjectGUID="{DCA0C667-2A7A-4FCE-AD02-466F7A380E0C}"RootNamespace="wowmodelview"<>="Win32Proj"<>="131072<>开头的这句把9.00改为8.00就可以了。


3.建议vc项目用vs2005

4.1.无法打开,can not open files即无法找到该文件,归因于包含目录设置需要修改。

以VS2005为例:

需要修改以下三个包含目录:

i、c++编译器-》常规-》附加包含目录。

ii、link链接器-》附加包含目录。

iii、资源-》附加包含目录。

修改办法如下:

1.注意路径设置是否有误。

2.尽量将相对路径改为绝对路径。

 

6.生产lib文件

 

The first step is create an import library. Start a MSVS Command Prompt, and go to the GnuTLS installation directory.

 

< def:libgnutls-26.def FilesGnuTLSbin>lib>
 
 

This will create a libgnutls-26.lib that can be used as a import library for Visual Studio projects.

 

Build a sample program to test it as follows:

 

< C:Program 1.6.0 foo FilesGnuTLSbin>foo ... libgnutls-26.lib -Dssize_t="long" include -I.. foo.c FilesGnuTLSbin>cl>
 
 

These steps are not fully polished yet, but appear to work.

转载于:https://www.cnblogs.com/ATually/archive/2012/03/28/2420997.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值