- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C++ のDLLがdelphiで読めない)
C++ DLLをdelphiで読む方法は?
このQ&Aのポイント
- C++のDLLをdelphiで利用する際にエントリポイントが見つからない問題が発生します。VC++で作成されたDLLは特殊な関数名で呼び出されるため、delphiからは正しく読み取れません。他の言語と同様に呼び出すためのDLLを作成する方法について説明します。
- VC++で作成されたDLLは特殊な関数名であるため、delphiからは正しく読み取ることができません。他の言語と同じように関数名で呼び出せる(普通の)DLLを作成する方法について説明します。
- C++のDLLをdelphiで利用する際にはエントリポイントが見つからないというエラーが発生します。VC++で作成されたDLLは特殊な関数名であるため、delphiからは正しく読み取ることができません。他の言語と同じような関数名で呼び出せる(普通の)DLLを作成する方法について解説します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
C++では、引数のデータ型の違いによるオーバーロードなどがあるため、 関数名に型情報を付けたものがオブジェクトに出力されるシンボル名となっているのです。 これをマングリングといいます。 http://www.kijineko.co.jp/tech/cppemb/mangling.html エクスポートする関数については、C++のクラスは使わないようにした上で、 Cの関数として宣言してみてください。 (extern "C" { … } の中に記述する。) http://www.kishiro.com/programming/c/import_cpp.html Cレベルのエクスポートにしておけば、シンボルが関数名そのものになりますので、 DLLをdelphiでも呼び出せるようになります。
お礼
PCの不具合で大変お礼が大変遅れてしまい まして申し訳ありません。 非常に参考になりとても助かりました。 なるほどそういうことだったのですね、 オーバーロードの機能と関係のあることとは 知りませんでした。 Delphiとの連携はC++の機能を使わずに行えば 問題なくできることを確認して、とてもすっきり しました。ただ、ストリームを使わないとなると なかなか大変ですね。おかげさまで C の勉強にも なっています。 本当にありがとうございました。