同じDLL内にある関数から関数を呼ぶにはどうしたら
良いのでしょうか?

A 回答 (3件)

例えば、FuncA という関数の中で FuncB という関数をコールするならば


FuncA が書かれているより前に FuncB の型が宣言されてなければいけません。
今回修正したように順番を変えればエラーにはなりませんが、一般的には
関数の型宣言をします。
#いっぱい関数があって、いろいろな呼ばれ方して、関数を書く順番を
#考えなきゃいけないなんて、めんどくさいですよね。

例えば int型の関数だとしたら、以下のように書けばいいのです。

int FuncA();
int FuncB();

int FuncA()
{
 intRet = FuncB();
}

int FuncB()
{
 return(ret);
}


int FuncA();
int FuncB();
の2つの宣言はソースの上の方で記述したり、ヘッダに記述して
インクルードすればOKです。
規模が小さかったり、ローカル関数であればソースに書いてもいいですが、
規模が大きかったり、グローバル関数の場合はヘッダで管理するのが
一般的です。

で、本題の問題ですが、「期待する値が取得できません」というのが
この質問を読んでいる人には伝わらないと思います。
もう少し具体的に書くと、みんな回答しやすいと思います。
まあ今回の問題は、デバッグして、B()関数で return している値を
確認すれば原因はすぐに判明するでしょう。
がんばってください。
    • good
    • 0

補足に書かれているのはコンパイル時のエラーですよね?


単に型宣言してないだけは???
普通はサブルーチンコールと同じですから問題ないはずですが、
何か特殊なことをしていますか???

この回答への補足

cpp内に関数を書く順番を変えました。

AからBを呼ぶ場合は、
Aの下にBの関数を書かなければならないんですね。(--;
ゴメンなさい。

呼び出すことはできました。
(コンパイルはとおりました)
が、上手く処理できてないみたいです。
期待する値が取得できません。
VBからBの関数を呼び出した場合には、
期待する値が返ってくるんですが…。
うーん…。

補足日時:2002/03/27 16:01
    • good
    • 0

>同じDLL内にある関数(A)から


>関数(B)を呼ぶにはどうしたら
>良いのでしょうか?
DLLでも特殊なことはないと思う
通常に呼べないの?
AもBも同一DLL内にあるのですか

この回答への補足

はい、
AもBも同一DLL内にあります。
通常に呼べません。
例えば、AからBを呼ぶ場合

intRet = B()

と記述すると、Bは定義されていない識別子というエラーになってしまいます。

補足日時:2002/03/27 14:28
    • good
    • 0

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


人気Q&Aランキング

おすすめ情報