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

VC++でDLLを作成しています。
超初心者です。

関数から関数を呼ぼうとしたら、
>関数ポインタとして評価されない式を使って、関数を呼び出そうとしました。
というエラーがでました。
どういうことでしょうか?

A 回答 (2件)

エラーの内容を書くよりどのようなプログラムでひっかかっているのかを書いた方が分かりやすいかと思います。


考えられるものとしては、関数の引数の型は合っていますか?
また、返り値の型は合っていますか?
プロトタイプ宣言と比較してみてください。
*型やアドレスわたしなど間違えやすいと思うのでチェックしてみてください。
もちろんデリミタ-や{}は大丈夫ですよね。
もしどうしても分からないようならプログラムを省略して書いてみてはいかがでしょうか。

この回答への補足

アドバイスありがとうございます。

呼び出し側

extern "C" __declspec(dllexport) char __stdcall AddDateA(char * date,int dd)
{
int i_end;
i_end = GetEndDate(date);
}

呼ばれる関数
extern "C" __declspec(dllexport) int __stdcall GetEndDateA(char * date)
{

}

です。

補足日時:2002/03/22 15:22
    • good
    • 0

まず、LoadLibrary("000.DLL");を行いDLLをロードします。


その後GetProcAddress("GetEndDate");でGetEndDate()のアドレスを求めないと、GetEndDate()では呼び出せません。
まずは、基本から。

呼び出し側のAddDateA()は__declspec(dllexport)は不要です。

この回答への補足

うーん。
ごめんなさい。
意味がわかりません。

defファイルで、
関数名を列記するだけではダメなのでしょうか?

今度は、「GetEndDateAは定義されていない識別子、というエラーが出てしまいました。

また、VBからこの関数も使うのですが、
それでも、__declspec(dellexport)は不要ですか?
そもそも、これはなんのため・・・。

かなり初歩的なことで申し訳ないです…

補足日時:2002/03/25 10:20
    • good
    • 0

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