用于 GDI 打印的 MSDN 示例中缺少文件
Posted
技术标签:
【中文标题】用于 GDI 打印的 MSDN 示例中缺少文件【英文标题】:Missing file from MSDN example for GDI printing 【发布时间】:2014-01-09 12:39:11 【问题描述】:我正在尝试学习使用GDI
进行打印。
我搜索了MSDN
的资源并找到了this 示例。
我喜欢将打印放在单独的线程中的想法,并且使用GDI
比使用XPS API
更容易学习,所以我下载了示例。
尝试编译后(我使用Visual Studio 2008
)我得到这个错误:
fatal error C1083: Cannot open include file: 't2embapi.h': No such file or directory
根据this,我发现我不是唯一一个面临这个问题的人。
不过,我尝试Google
上述错误并发现this 表明我没有最新的SDK
。
我在C:\Program Files\Microsoft SDKs\Windows
中搜索并找到了一个文件夹v6.0A
,这表明我没有安装最新的SDK
。
但是,here 我发现了一个帖子,有同样问题的人没有通过下载最新的SDK
解决它(虽然该帖子的发布年份是 2006 年,但当时文件仍然丢失,并且下载 SDK 没有帮助 - 为什么现在要改变?)。
我的问题是:
有没有办法得到这个文件(如果我下载最新的SDK
有误,请纠正我)?
我认为这个文件必须与字体有关 - 有没有办法修改示例以便我不必使用该文件?
感谢您查看此主题并尝试提供帮助。
最好的问候。
【问题讨论】:
【参考方案1】:T2Embapi.h 由 Windows SDK 提供,它包含用于处理嵌入 OpenType 字体的字体嵌入服务库的声明。显然,您使用的 SDK 版本太旧而无法使用。不确定需要哪个版本,我知道 v6.0 没有,但 v7.1 有。
由于它是作为 XPS 示例开始的,因此该项目有些草率。构建 GDI 示例实际上不需要 T2Embapi。您可以简单地从 stdafx.h 中删除#include。项目的 Release 配置设置也有些草率,从链接器的 Additional Dependencies 设置中删除 T2embed.lib 和 XpsPrint.lib。
【讨论】:
谢谢,我会尝试并报告我的结果。最好的问候。 我试图删除库,但找不到它们在哪里。我查看了 project->*Properties*->*Linker*->*Advanced*。然而,程序运行,但打印到XPS
文件。难道是因为我没有打印机?请为我的打扰道歉,但您似乎已经尝试过此应用程序,所以我问。谢谢你和最好的问候。
如前所述,它们位于发布配置设置中。您可能只查看调试设置。我没有看过,但假设程序将打印到默认打印机。通常是 XPS 打印机。选择另一台打印机作为默认打印机。使用 FILE 端口让它将输出写入文件而不是打印机。
谢谢帕桑特先生。由于该程序有效,并且通过查看它,我发现他们在说明基础知识方面做得很少,我认为您是对的。因此,我会接受您的回答(并投票赞成),因为删除库是另一个与此问题无关的问题。最好的问候。
好的,我找到了——我找错地方了。我已经删除了它们,但即使我将默认打印机更改为 One Note(我没有打印机),文件仍然发送到 XPS
。这不是什么大问题,我仍然可以从示例中学习。再次感谢您并致以最诚挚的问候。【参考方案2】:
你的问题是:
1. 有没有办法得到这个文件(如果我下载最新的SDK有错误请纠正我)?
最新版本的 Windows SDK 适用于 Windows 8.1。 Windows Software Development Kit (SDK) for Windows 8.1。但是,我认为“t2embapi.h”已经包含 Windows 7 的 Windows SDK,因为我在“C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include”中找到了头文件。2. 我认为这个文件必须对字体做一些事情——有没有办法修改这个例子,所以我不必使用那个文件?
@Hans Passant 已经回答了这个问题。【讨论】:
感谢您的回答,我会尝试下载7.1版本并报告我的结果。最好的问候。 我只能接受一个答案,Mr.Passant 更快。感谢您的帮助,我已赞成您的回答。最好的问候。 别担心。我也知道 Mr.Passant 的回答更快,而且非常有用。感谢您的评论和好意! :)以上是关于用于 GDI 打印的 MSDN 示例中缺少文件的主要内容,如果未能解决你的问题,请参考以下文章