win32静态库使用mfc中msword类型库

来源:互联网 发布:捡尸神器淘宝叫什么 编辑:程序博客网 时间:2024/06/18 16:18

最近有个项目当中需要读取word文件,但是工程项目并非mfc工程,于是就在网上各种搜:win32使用mfc类型库,这样的例子网上有很多,但是拿来的时候总是出各种问题,经过重重百度+谷歌,现在终于实现了win32的静态库下调用word的功能了,现就详细处理过程记录如下。

首先,word使用的头文件主要有4个CApplication.h、CDocument0.h、CDocuments.h、CRange.h,这四个头文件创建步骤如下:

1、新建任一mfc应用程序,此处创建的是一个mfc dll,资源管理器视图如下


2、项目—添加类—TypeLib中MFC类


确认添加后出现如下界面,并在可用的类型库中选择word


3、在接口列表中可看到一系列word的接口,但我们现在只要用到四个:_Application、_Document、Documents、Range,选择这四个接口到生成的类列表中

单击完成生成上述的四个头文件


至此完成了头文件的导出工作,下面新建一个win32的静态库工程(不要预编译头),将导出的四个word头文件和targetver.h一起拷贝到win32工程目录下,将这几个头文件添加到工程下


以工程名为名称新建一个头文件及源文件。

下面就是真正重点了

1、CApplication.h头文件中原始导入库语句为

#import "C:\\Program Files\\Microsoft Office\\OFFICE11\\MSWORD.OLB"
将其替换为

#import "C:\\Program Files\\Microsoft Office\\OFFICE11\\MSWORD.OLB" rename_namespace("Word"),raw_interfaces_only, named_guids ,exclude("Pages")\rename("ExitWindows","owExitWindows") \rename("FindText","owFindText")using namespace Word;
对头文件CDocument0.h、CDocuments.h、CRange.h应用同样操作。

2、头文件TQRECIO.h中添加代码

#pragma once#ifndef VC_EXTRALEAN#define VC_EXTRALEAN            // 从 Windows 头中排除极少使用的资料#endif#include "targetver.h"#include <afx.h>#include <afxwin.h>             // MFC 核心组件和标准组件#include <afxext.h>// MFC 扩展#include <afxdisp.h>// MFC 自动化类#include "CApplication.h"#include "CDocument0.h"#include "CDocuments.h"#include "CRange.h"

3、TQRECIO.cpp包含头文件TQRECIO.h

4、项目配置

  • 项目——配置属性——常规——MFC使用,设置为:在静态库中使用MFC
  • 项目——配置属性——C/C++——代码生成,不能为/MD,此处我设置为/MTd

至此,所有配置完成,编译通过

注:使用过程中调用工程出现了一些链接错误,在链接器命令行中加入/force可强制编译通过,实现正常调用。

0 0