C++ Builder 和 chm 帮助文件

3

我正在尝试将CHM帮助文件集成到我使用C++ Builder编写的应用程序中,但我总是收到“未安装上下文相关帮助”的提示。

我添加了以下几行代码:

#include "HtmlHelpViewer.hpp"

OnCreate.. (Form1)

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

我已经通过对象检查器设置了HelpContext,也尝试手动调用

Application->HelpContext(170);

但是,它没有起作用。该怎么办?

1个回答

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论坛帖子,我怀疑您正在使用需要单元作用域名称的版本。您可能已经指定了单元作用域别名,这意味着您可以在头文件#include中省略单元作用域名称。但似乎您无法在#pragma link指令中省略单元作用域名称。

我已经尝试过了,但是我遇到了链接器错误: "[ILINK32 错误] 错误: 无法解析外部引用 'HtmlHelpA',它被引用于 D:\CPP PROJEKTI\HELP & APP\WIN32\DEBUG\HTMLHELPVIEWER.OBJ" - Tracer
我怀疑解决方案是使用单元作用域名称。尝试 #pragma link "Vcl.HTMLHelpViewer"。这个Emba论坛帖子似乎有你报告的相同症状:https://forums.embarcadero.com/message.jspa?messageID=413904 - David Heffernan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接