【发布时间】:2015-01-28 12:06:36
【问题描述】:
我有一个 Visual c++ 应用程序,它使用 office COM 组件上的导入来操作 office 文档。该应用程序依赖于用户机器上安装的 office 版本。下面的示例是我拥有的类型库标题的一部分从我安装的 Office 版本(2010)为 excel 生成:
// Created by Microsoft (R) C/C++ Compiler Version 10.00.40219.01 (e8ba858a).
//
// d:\play_ground\pimawordtopdf\release\excel.tlh
//
// C++ source equivalent of Win32 type library C:\\Program Files (x86)\\Microsoft Office\\Office14\\EXCEL.EXE
// compiler-generated file created 11/26/14 at 09:02:55 - DO NOT EDIT!
//
// Cross-referenced type libraries:
//
//
#pragma once
这在我安装了 office 2007 的另一台测试机器上运行良好,但有些东西在安装了 office 2013 的机器上无法正常工作。我的问题是:microsoft office 的类型库是否向后兼容,以便使用 2010 生成的类型库适用于 2007 年。如果这是真的,我将不得不生成 2013 年类型库并用它们编译我的应用程序,以便它适用于 2013 年、2010 年和 2007 年。
感谢您的宝贵时间。
【问题讨论】:
-
这不是类型库,只是 从 类型库自动生成的 .tlh 文件。与 .tli 文件(自动生成的包装函数)一起,它使 COM 编程变得更加容易。 COM 对象自动化模型已经兼容超过 16 年。相当了不起,但裂缝开始发展。当然它是向后兼容性,你不能指望2010年添加的接口方法在2007年可以工作。只有记录你的特定才能得到有用的答案i> 问题。