以前に同じ質問をしました。以前は、XP32ビットで何とかエラーを回避して
メニューからクリックすることでヘルプファイルの表示に成功し解決しています。 その節は皆さん有難うございました。
同じプログラムをWindows 7 64ビットに移して、Visual Studio 2008
C++でデバッグすると、
error LINK2019:未解決の外部シンボルHtmlHelpWが関数"protected: virtual void cdec1等のように出てエラーとなります。
その下の行にはfatal error LINK1120 外部参照1が未解決ですと
出ています。
エラーが出ているのは
::HtmlHelp(NULL, NULL, HH_INITIALIZE, (DWORD)&dwHelpCookie);// HtmlHelp用
の他にUNINITIALの行、さらにDISTROYの行でも出ています。
リンカ→入力でhtmlhelp.libを入れていますし、
VC++ディレクトリーにはhtmlhelp.hヘッダーのディレクトリとhtmlhelp.libライブラリのディレクトリーもx64のプラットフォーム設定でセットしています。 また、#include <hemlhelp.h>も忘れていません。
何度も試していますので、この設定は間違いありません。
64ビットでは何処かを変えなければ動きそうに有りません。
どのようにすれば治るかご教授お願いします。
VS2008を持っていないのでGoogleの検索結果を見ただけですが
Windows SDK(6.0A)以降をDLして、\Program Files\Windows SDK\
フォルダのamd64 or x64(この辺が不明)のhtmlhelp.libをリンクしてみては?
sさん アイデアを有難うございます。
SDK7.1をダウンロードして、htmlhelpのファイルをincludeしました。
ライブラリファイルの方は、x64とIA64の両方をコピーして持ってきましたが、上に書いたエラーは、全く同じことでした。
困りました。
とりあえずウチの VS2005 においてふつーに Win32 Application をつくり
プロジェクト構成を x64 にして HtmlHelp を呼ぶと、
追加ライブラリに htmlhelp.lib を追加するだけでうまくリンクできた。
(x64 OS でないので実行は出来ないけど)
わざわざ PSDK を追加とかしてないよ。
プロジェクト構成の作り方が間違っているのでは?
32ビットなら、読みだせるのです。
インターネットで、あれこれ調べたところ、VISTAの時代からだそうですが、Windows 7ではHtmlHelp.chmはセキュリティの問題とかでサポートされていない様子です。 そのために、うまくいかないのかどうかわかりませんが、普通のHTMLファイルを作ってそれを読み込ませることにします。
でも、どうやって読ませるか…
ほかの書き込みを検索してみます。
みなさん有難うございました。
> Windows 7ではHtmlHelp.chmはセキュリティの問題とかでサポートされていない様子です。
> そのために、うまくいかないのかどうかわかりませんが
ビルド段階でエラーが出て実行ファイルを作れていない状況なんだよね?OS関係無いような…
> ライブラリファイルの方は、x64とIA64の両方をコピーして持ってきましたが
怪しさを感じさせる表現だ…具体的にどんな事しました?
とりあえず、vista(x64) + vs2008(SDKはvs2008標準の6.0A)環境ではconsole、Win32、MFCに関わらず問題は出なかった。
ただ、試しとして、参照libディレクトリをx86用のディレクトリに変更してDebug構成でビルドしたら
> error LINK2019:未解決の外部シンボルHtmlHelpWが関数・・・
を含めた error LINK2019 が多数出た。
x86用の htmlhelp.lib を参照していたりしない?