VS2010下编译DSOframer

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.csdn.net/autopine1/article/details/49359785

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: DSO Framer是一个ActiveX控件,可以嵌入Office文档并在应用程序中显示。如果你想在VS2022中使用DSO Framer控件,可以按照以下步骤进行操作: 1. 在Visual Studio中打开你的项目,右键单击项目名称,选择“添加”>“现有项”。 2. 在“添加现有项”对话框中,浏览到DSO Framer控件文件的位置(通常是dsoframer.ocx),然后选择它并单击“添加”。 3. 在“添加现有项”对话框中,选中刚刚添加的DSO Framer控件,然后单击“属性”。 4. 在“属性”窗口中,将“嵌入互操作类型”属性设置为“是”。 5. 在你的窗体或用户控件中添加一个ActiveX控件,并在属性窗口中设置其“类名”属性为“DSOFramer.DsoFramerControl”。 6. 通过使用控件的“Load”方法或在窗体的“Load”事件中调用该方法来加载文档。 下面是一个简单的示例代码,用于在窗体中使用DSO Framer控件加载一个Word文档: ``` public partial class Form1 : Form { private DSO.FramerControl _framerControl; public Form1() { InitializeComponent(); _framerControl = new DSO.FramerControl(); _framerControl.Dock = DockStyle.Fill; this.Controls.Add(_framerControl); } private void Form1_Load(object sender, EventArgs e) { _framerControl.Open("C:\\mydocument.doc"); } } ``` 这个示例代码中,我们在窗体的构造函数中创建了一个DSO Framer控件的实例,并将其添加到窗体的控件集合中。然后在窗体的“Load”事件中,我们通过调用控件的“Open”方法来加载指定路径下的Word文档。 ### 回答2: DSOframer.ocx是一个用于使用Microsoft Office文档对象的ActiveX控件,可以在应用程序中嵌入和显示Office文档。如果你想在VS2022中使用DSOframer.ocx,可以按照以下步骤进行操作: 1.将DSOframer.ocx文件添加到你的项目。可以在项目文件夹下创建一个名为"OCX"的文件夹,将DSOframer.ocx文件拷贝到该文件夹中。 2.在VS2022中打开你的项目,找到解决方案资源管理器窗口,在其中右键点击你的项目,选择"添加" -> "现有项"。 3.在弹出的对话框中,浏览到"OCX"文件夹,选择DSOframer.ocx文件,点击"添加"按钮。 4.在解决方案资源管理器窗口中,找到刚才添加的DSOframer.ocx文件,右键点击该文件,选择"属性"。 5.在属性窗口中,将"嵌入互操作类型"属性更改为"是",这样可以自动生成Interop.DSOframer.dll互操作程序集。 6.在你的代码文件中,添加对Interop.DSOframer.dll的引用。可以使用以下代码行:`using Interop.DSOframer;` 7.现在,你可以在代码中使用DSOframer控件了。例如,可以创建一个Windows窗体,在窗体上添加一个AxDSOFramer.AxFramerControl控件,该控件用于显示Office文档。你可以使用以下代码行来实现: ``` private AxDSOFramer.AxFramerControl axFramerControl1; public Form1() { InitializeComponent(); axFramerControl1 = new AxDSOFramer.AxFramerControl(); axFramerControl1.Location = new Point(10, 10); axFramerControl1.Size = new Size(300, 300); this.Controls.Add(axFramerControl1); } ``` 上述代码创建一个名为axFramerControl1的控件,并将其添加到窗体上。你可以使用其他控件和事件来操作和显示Office文档。 以上是使用VS2022使用DSOframer.ocx的简要介绍。希望对你有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值