質問: VisualStudio2010 VC++でDLLを作成し既存のDelphiXE2アプリで利用したいのですが MSのサンプルソースそのままでDLLを作成しても、__stdcall;しても、Delphiの読み込み時に 「エントリポイントが見つかりません」と言われます。 ソースはMSのチュートリアルそのままです。 ためしに VS2010のツール dumpbin.exe /exports ????.dll と中身を覗くと 1 0 ooo11104 ?Add@MyMathFuncs@MathFuncs@@SGNNN@Z 2 1 ,,,,,,,,,,,,,, のような表示とSummary 以下しか表示されずスタティックライブラリにしても中身は同じです。 それでは、と他のDLLをいくつか覗いてみましたが、大概のDLLやLIBファイルを覗くと すっきりしたきれいな関数名の一覧がdumpbin /exports で表示されます。 では、DLLになっていないのかというと、作ったDLLを同じVC++でチュートリアル通りに 呼び出すと何の問題もなく使えますので、多分正常なのでしょう。 しかし、どうして エントリポイントの一覧が見える形にならないのか分かりません。多言語で利用するには 必要かと思います。 VC++で作成したDLLやLibが他の環境で使えないとは考えられないので、なにか、常識的な 部分を知らないのだと思いますが、どなたかよろしくお願いします。
回答: 「DLL エクスポート DEFファイル」あたりで検索して下さい。 とか見つかるかと思いますが......。 戻り値や引数の型、数によってdllexportでエクスポートした場合の名前が変わります。 dllimportならば、同じ形式でエクスポート名を生成しますから問題は出ないのですが...... 他の環境で使う場合には使いにくいものになります。 extern "C" とすることで、命名規則が微妙に変わりますが...やはり使いやすいものにはなりません。 defファイルで指定する方法ならば名前は固定化できます。 # ただし、この方法ではクラスは使えない...でしょう。 あと... [技術者向] コンピューター > プログラミング > C・C++ のカテゴリの方がよろしいかと......。 # まぁ、使うりがDelphiでも、DLL作成はVCのようですし。