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 (本人试验过,确实有效)
编译个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文件
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:
These steps are not fully polished yet, but appear to work.