プロが教えるわが家の防犯対策術!

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
等のエラーになります。

解決策を教えてください。

A 回答 (3件)

>ロード方法が誤っているのでしょか?


>記述は以下です。
>static HINSTANCE hDLL;
>hDLL = LoadLibrary(TEXT("DLL_TEST.DLL"));
>
>DLLをフルパスで指定しても同じです。

ロード方法は間違ってないですよ。
やはり見えてないだけでは?
もしかして、DLLとして読み込めないか。
ちなみに、どんな感じでフルパス指定しました?


GetLastError()でエラーの詳細を確認してみてください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/09/08 17:09

DLLを作成した側の開発環境は何ですか?


DLLを作成した時のプロジェクトの設定とかは?
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/09/08 17:08

DLLの呼び出しと全く関係ないエラーしか出ていません。



リンクエラーは、WinMainが無いと怒っています。
main()から始まるプログラムではなく、WinMainから始まるプログラムを書いてください。


>また上記"_WinMain@16"のライブラリーをリンクさせると

どのように判断してSCRNSAVE.LIBをリンクしたんですか?
このライブラリは、名前からも判断できるように、スクリーンセーバー用のライブラリです。

で、まず開発環境は何でしょう?
    • good
    • 0
この回答へのお礼

ありがとうございます。
WinMainを記述したところリンクエラーは解消できました。
ただ、WinMainにてDLLをロードしようとしてるのですが、
エラーとなります。(NULLで返却されます)

ロード方法が誤っているのでしょか?
記述は以下です。
static HINSTANCE hDLL;
hDLL = LoadLibrary(TEXT("DLL_TEST.DLL"));

DLLをフルパスで指定しても同じです。

お礼日時:2003/09/08 13:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!