2013-04-23 68 views
3

我试图实现CHM帮助文件到我的应用程序编写C++ Builder中,但我总是得到“没有安装上下文相关的帮助。”C++ Builder和CHM帮助文件

我添加这些行:

#include "HtmlHelpViewer.hpp" 

的OnCreate ..(Form1中)

Application->HelpFile = ExtractFilePath(Application->ExeName) + "myfile.chm"; 

我已经通过对象检查器中设置HelpContext并且还手动试图打电话

Application->HelpContext(170); 

但是,它不工作。该怎么办?

回答

4

您需要强制链接到包含代码。只包含头文件是不够的。

尝试增加给你的代码:

#include "HTMLHelpViewer.hpp" 
#pragma package(smart_init) 
#pragma link "HTMLHelpViewer" 

我假设你不需要添加Vcl单元范围的名称,因为你没有在问题的代码这样做。但是,如果你确实需要做到这一点的代码是这样的:

#include "Vcl.HTMLHelpViewer.hpp" 
#pragma package(smart_init) 
#pragma link "Vcl.HTMLHelpViewer" 

通过您的意见来看,这Embarcadero forum thread,我怀疑你正在使用需要单位范围名称的版本。你可能有指定的单位范围别名意味着你可以在头文件#include忽略单元范围的名称。但似乎你不能在#pragma link指令省略单元范围的名称。

+0

我已经尝试过,但我有一个链接器错误: “[ILINK32错误]错误:解析外部 'HtmlHelpA' 从d引用:\ CPP PROJEKTI \ HELP&APP \ WIN32 \ DEBUG \ HTMLHELPVIEWER.OBJ” – Tracer 2013-04-23 11:27:58

+0

我怀疑解决方案是使用单位范围名称。试试'#pragma link“Vcl.HTMLHelpViewer”'。这恩巴论坛的帖子似乎有你报道的相同的症状:https://forums.embarcadero.com/message.jspa?messageID=413904 – 2013-04-23 11:30:49

+0

是的!这工作!谢谢! – Tracer 2013-04-23 11:34:06