DSOframer这个古董在新时代依然有用。DSOframer最后版本为2.3,还是用VC6编译的。用VS2010编译,会产生一大堆错误。现在介绍下32位windows7,VS2010下编译DSOframer2.3的方法:
1. dsoframedemo\ms_dsoframer\XMLHttpClient.h(42):error C4430: missing type specifier - int assumed. Note: C++ does not supportdefault-int
打开:项目----项目属性----配置属性----C/C++----命令行,在附加选项那里添加/wd4430这个选项。
2.error C1083: 无法打开类型库文件:“C:\Program Files\Microsoft Office\Office12\MSWORD.olb”: No such file or directory
打开DSOframer项目文件夹下的msoffice.h,把里面引用的office文件路径改为符合你系统实际情况的路径。
3.error C2872: “......”: 不明确的符号
把msoffice.h 中相关using namespace放到#import之后,比如:
#ifndef DSO_MSOFFICE_
#define DSO_MSOFFICE_
#import "C:\Program Files\Common Files\DESIGNER\MSADDNDR.DLL" raw_interfaces_only, raw_native_types, no_namespace, named_guids
#import "C:\Program Files\Common Files\Microsoft Shared\OFFICE14\mso.dll" rename_namespace("Office")
#import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.olb" rename_namespace("VBE6")
#import "C:\Program Files\Microsoft Office\Office14\MSWORD.olb" rename("ExitWindows","ExitWindowsEx"),rename_namespace("MSWord")
#import "C:\Program Files\Microsoft Office\Office14\EXCEL.exe" rename("RGB","RGBEx"),rename("DialogBox","DialogBoxEx"),rename_namespace("MSExcel")
#import "C:\Program Files\Microsoft Office\Office14\MSPPT.OLB" named_guids,rename_namespace("MSPPT")
using namespace MSPPT;
using namespace MSExcel;
using namespace MSWord;
using namespace VBE6;
using namespace Office;
#ifdef SUPPORT_WPS
#import "c:\Program Files\Kingsoft\WPS Office 2005 Professional\office6\kso10.dll" rename_namespace("Wps")
using namespace Wps;
#import "c:\Program Files\Kingsoft\WPS Office 2005 Professional\office6\wpscore.dll" rename_namespace("Wps")
using namespace Wps;
#endif
#endif
4.error C2143: 语法错误 ......dsoframer.h
在dsoframer.h中加入头文件#include <Mshtmlc.h>注意顺序,要放到msoffice.h之前
5. 错误:LINK : fatal error LNK1104: cannot open file 'libc.lib'
在Project-->Setting-->Linker-->Command Line-->Additionaloptions中加入:
/Nodefaultlib:libc /Nodefaultlib:libcp
6...\Microsoft VisualStudio 10.0\VC\atlmfc\include\atlbase.herror C2065: 'CLSID_StdGlobalInterfaceTable': undeclared identifier
atlbase.h 加上头文件 #include <CGuid.h>,比如:
#pragma warning(disable: 4355)
#include <CGuid.h>
7. IID GUID_NULL未定义错误
在..\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlcomcli.h 添加extern const IID GUID_NULL; 比如:#ifndef __ATLCOMCLI_H__
#define __ATLCOMCLI_H__
extern const IID GUID_NULL;
#pragma once
8.error MSB3073: 命令“regsvr32 /s /c ......:VCEnd”已退出,代码为 3
项目属性-配置属性-自定义生成步骤 ,修改“输出”项为“从父级或项目默认属性继承”即可。
参考文章:http://blog.youkuaiyun.com/autopine1/article/details/49359785