vc++/MFC调用.chm帮助文档使用方法

C++ 专栏收录该内容
1 篇文章 0 订阅

1、首先需要已经编译好的.chm文件,路径按需要自己设置(后续会写一篇编辑、生成.chm文件的文章,以供参考);

2、 作者的编译环境:win10 64位,VS2010 ,64位程序(注意!过程中遇到编译不通过的就由此产生);

3、 VS2010新建 project后,需要配置好相应的运行环境,包括:“htmlhelp.h”,“htmlhelp.lib”

      简单的办法是:

       (1) 将htmlhelp.h置于路径,当前工程“..\\Include\\”;(完全自定义,个人喜好问题)

       (2) 将htmlhelp.lib置于路径,当前工程“..\\Lib\\”;(完全自定义,个人喜好问题)

     (3)项目->工程属性->C/C++ 附加包含目录  将htmlhelp.h添加进去,以及  项目->工程属性->链接器->附加依赖库  将htmlhelp.lib添加进去;

  或者可参考论坛内其他博主的技术博客。

4、打开工程 main.cpp,添加:#include "htmlhelp.h";

5、调用函数: HWND hwnd  = HtmlHelp(NULL, (LPCSTR)helpFilePath,HH_DISPLAY_TOPIC, NULL);

     作者写了一个button响应函数:

void CTestHtmlHelpDlg::OnBnClicked()
{
    CString strHelp;
    strHelp =_T("E:\\TestHtmlHelp\\Test.chm"); 
   //(测试功能采用了绝对路径,实际中可用 GetModuleFileName()自己解析.chm所在路径)
    
    char charHelp[MAX_PATH];
    strcpy(charHelp, strHelp);
    HWND helpwnd = ::HtmlHelp(GetSafeHwnd(),charHelp,HH_DISPLAY_TOPIC,NULL) ;
}

在32位程序下,编译顺利通过。

问题来了,输出64位程序报错:

     “无法解析的外部符号 HtmlHelpA,该符号在函数.....................”

大多数出现无法解析的外部符号问题,解决办法可以参考博客:https://blog.csdn.net/pan5690983/article/details/80061469

本文中作者各中办法都试了,依然报这个错误,后来一想输出的64位,而经过查询得知使用的htmlhelp.lib是32位,问题找到后,将该lib替换掉即可,但是MS并没有专门发布64位的.lib,在 Stackoverflow中找到了解决办法(https://stackoverflow.com/questions/85872/linking-htmlhelp-lib-with-x64),

从Microsoft SDK中找到这个64位.lib

替换后,问题得到解决。

  • 1
    点赞
  • 0
    评论
  • 4
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值