Delphiで作成したDLLをVCで使用したんですけど、DLLの関数を呼び終わった時点でメモリエラーが出るときがあります。
調べてみると、引数がある関数を呼び出したときは必ずエラーが起き、
引数がない関数を呼び出すだけのときは特に問題は起こりません。
Delphiで作成したDLLを他の言語で使用する場合には、何かしなくてはならないことがあるんでしょか?
宜しくお願いします。
>Delphiで作成したDLLを他の言語で使用する場合には、
>何かしなくてはならないことがあるんでしょか?
ない!
通常は、共通で使えるようにDLLを作成するから・・・
この質問の内容だけで的確な回答はできません。
ってことで、間単に書くと
Exporr、静的、動的呼出し、Standard、AnsiString等など
原因としておおよその見当はつきますが・・・
考えられる原因すべてをのべてそれぞれについて回答するには
A4レポート100枚以上はいるわい!
少なくとも途中の大きな処理は省いて
呼び出し、受け側のコードぐらいは記述したら?
引数や戻り値で使用する型の定義が、Delphi と VC とでは異なるようです。
Integer型については互換性があるようですが、String型は全くダメのようです。
回答になっていませんが、ご参考まで。
引数がある時とない時で挙動が違うんだから「呼び出し規約」じゃないの?
stdcallとかcdeclとかがアプリとDLLで一致してないんでしょ・・・
どやささん、倒壊さん、dllさんありがとうございます。
返事が遅くなってしまい、申し訳ありません。
dllさんの仰るとおり、stdcallの付け忘れでした。
ご指導ありがとうございました。
解決済みにするのを忘れてました。
重ね重ね申し訳ありません。
ツイート | ![]() |