• ベストアンサー

DLL呼び出しAPのリンクエラーについて

DLL作成初心者です。 当方で簡単なDLLを作成しました。 試しに、下記の呼び出しAP(EXE)を作成しようと したのですが、リンクエラーになります。 どうしてでしょうか? 呼び出しAP #include <windows.h> int main(){ static HINSTANCE hDLL; hDLL = LoadLibrary(TEXT("DLL_TEST.DLL")); if (hDLL) FreeLibrary(hDLL); return 0; } リンクエラーは下記 IBCD.lib(wincrt0.obj) : error LNK2001: 外部シンボル "_WinMain@16" は未解決です Debug/TEST.exe : fatal error LNK1120: 外部参照 1 が未解決です また上記"_WinMain@16"のライブラリーをリンクさせると SCRNSAVE.LIB(scrnsave.obj) : error LNK2005: _main はすでに test.obj で定義されています SCRNSAVE.LIB(scrnsave.obj) : error LNK2001: 外部シンボル "_ScreenSaverProc@16" は未解決です SCRNSAVE.LIB(scrnsave.obj) : error LNK2001: 外部シンボル "_ScreenSaverConfigureDialog@16" は未解決です SCRNSAVE.LIB(scrnsave.obj) : error LNK2001: 外部シンボル "_RegisterDialogClasses@4" は未解決です Debug/TEST.exe : fatal error 等のエラーになります。 解決策を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

>ロード方法が誤っているのでしょか? >記述は以下です。 >static HINSTANCE hDLL; >hDLL = LoadLibrary(TEXT("DLL_TEST.DLL")); > >DLLをフルパスで指定しても同じです。 ロード方法は間違ってないですよ。 やはり見えてないだけでは? もしかして、DLLとして読み込めないか。 ちなみに、どんな感じでフルパス指定しました? GetLastError()でエラーの詳細を確認してみてください。

akira_akira
質問者

お礼

パスの設定違いでした。ありがとうございます。

その他の回答 (2)

  • isobeman
  • ベストアンサー率41% (17/41)
回答No.3

DLLを作成した側の開発環境は何ですか? DLLを作成した時のプロジェクトの設定とかは?

akira_akira
質問者

お礼

パスの設定違いでした。ありがとうございます。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

DLLの呼び出しと全く関係ないエラーしか出ていません。 リンクエラーは、WinMainが無いと怒っています。 main()から始まるプログラムではなく、WinMainから始まるプログラムを書いてください。 >また上記"_WinMain@16"のライブラリーをリンクさせると どのように判断してSCRNSAVE.LIBをリンクしたんですか? このライブラリは、名前からも判断できるように、スクリーンセーバー用のライブラリです。 で、まず開発環境は何でしょう?

akira_akira
質問者

お礼

ありがとうございます。 WinMainを記述したところリンクエラーは解消できました。 ただ、WinMainにてDLLをロードしようとしてるのですが、 エラーとなります。(NULLで返却されます) ロード方法が誤っているのでしょか? 記述は以下です。 static HINSTANCE hDLL; hDLL = LoadLibrary(TEXT("DLL_TEST.DLL")); DLLをフルパスで指定しても同じです。

関連するQ&A

専門家に質問してみよう