SHGetFolderPath関数を使用して、アプリケーションデータフォルダを取得しています。
このAPIはSHELL32.dll版とSHFOLDER.dll版があり、Windows98上で動作させるには、
SHFOLDER.dll版を使用しなければなりません。そこで、
#include <shfolder.h>
#pragma comment(lib, shfolder.lib)
を記述し、インストール先のフォルダにSHFOLDER.dllを配置しました。
しかし起動してみると、
「欠落エクスポート SHELL32.DLL:SHGetFolderPathA にリンクされています。」
というエラーが発生します。
MSDNには「SHFOLDER.DLL に実装されている SHGetFolderPath に必ずリンクするよう
に」と書かれていたのですが、これは具体的にどのような事をすればいいのでしょう
か?
宜しくお願いします。
えっと MSDN に書かれているとおりにすれば問題なく動作するはずですが、
記載されていないことをやっているようにしか見えませんけど。
>#include <shfolder.h>
>#pragma comment(lib, shfolder.lib)
こんなことしろと書いてあります?
書いてあるとおりにやったらできたですけど... (Win98 マシンを発掘してチェック済み)
わざわざ動作確認までして頂きまして、ありがとうございます。
http://www.microsoft.com/japan/msdn/library/?
url=/japan/msdn/library/ja/jpdnw2kcli/htm/AppSpecDesk5.asp
を参考にしていたのですが、「SHFOLDER.DLLにリンク」は、
どうのようにやったのかだけ、教えて頂けないでしょうか?
#pragma comment(lib, shfolder.lib)
てっきり、これの事だと思ってました・・・
shell32.lib より先に shfolder.lib がリンクされるように汁と書かれていますね。
#pragma comment ではリンク指定はできてもその順まで指定できなかったと思います。
VC++6 ならプロジェクトの設定→リンク→ライブラリ一覧で、先頭に shfolder.lib を追加
(要 Platform SDK) かな。他開発ツールならご自分で設定調べてください。
#include <shlobj.h> であって <shfolder.h> ぢゃないっすよ。
tetrapodさん、ありがとうございました。
ばっちり出来ました。
#pragma commentと、IDEからライブラリを登録するのは、
同じものだと思いこんでおりました・・・
まだまだ修行が足りませんでした。