- 締切済み
関数から関数を呼ぶ
VC++でDLLを作成しています。 超初心者です。 関数から関数を呼ぼうとしたら、 >関数ポインタとして評価されない式を使って、関数を呼び出そうとしました。 というエラーがでました。 どういうことでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- selenity
- ベストアンサー率41% (324/772)
まず、LoadLibrary("000.DLL");を行いDLLをロードします。 その後GetProcAddress("GetEndDate");でGetEndDate()のアドレスを求めないと、GetEndDate()では呼び出せません。 まずは、基本から。 呼び出し側のAddDateA()は__declspec(dllexport)は不要です。
- hilo256
- ベストアンサー率18% (3/16)
エラーの内容を書くよりどのようなプログラムでひっかかっているのかを書いた方が分かりやすいかと思います。 考えられるものとしては、関数の引数の型は合っていますか? また、返り値の型は合っていますか? プロトタイプ宣言と比較してみてください。 *型やアドレスわたしなど間違えやすいと思うのでチェックしてみてください。 もちろんデリミタ-や{}は大丈夫ですよね。 もしどうしても分からないようならプログラムを省略して書いてみてはいかがでしょうか。
補足
アドバイスありがとうございます。 呼び出し側 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) { … } です。
補足
うーん。 ごめんなさい。 意味がわかりません。 defファイルで、 関数名を列記するだけではダメなのでしょうか? 今度は、「GetEndDateAは定義されていない識別子、というエラーが出てしまいました。 また、VBからこの関数も使うのですが、 それでも、__declspec(dellexport)は不要ですか? そもそも、これはなんのため・・・。 かなり初歩的なことで申し訳ないです…