
VisualStudio2010C++で作ったDLLをdelphiで利用したいのですが、「エントリポイントが
見つかりません」といわれてしまいます。チュートリアルのサンプルそのままで試して見ましたが、VS2010 付属のdumpbin .exe でdllの中身を見るとエントリポイントが
@ILT+345?Add@MyMathFuncs@MathFuncs@@QAGNNN@Z)みたいな、元の関数名はどうした?
と思えるような名前です。
defファイルを使って見ましたが、今度は
1 0 0001115E Add = @ILT+345(?Add@MyMathFuncs@MathFuncs@@QAGNNN@Z)
みたいな表示でやはりdelphiから読めません。__stdcall にはしています。
VC++で読み込めばちゃんと読めるのである意味正しく作られているのだと思いますが、他のOpenNI , OpenGL などのdllをdumpbin /exports で覗くと、整然と関数名が並び、
これなら読めるだろうと思えますし、実際にdelphiでも使えます。
他の言語ですっきり関数名で呼び出せる(普通の)DLLを作るにはどうすれば良いのでしょうか。
VisualStudioで作ったDLLは呼ぶ側があの記号のような名前で呼べということなのでしょうか?
No.1ベストアンサー
- 回答日時:
C++では、引数のデータ型の違いによるオーバーロードなどがあるため、
関数名に型情報を付けたものがオブジェクトに出力されるシンボル名となっているのです。
これをマングリングといいます。
http://www.kijineko.co.jp/tech/cppemb/mangling.h …
エクスポートする関数については、C++のクラスは使わないようにした上で、
Cの関数として宣言してみてください。
(extern "C" { … } の中に記述する。)
http://www.kishiro.com/programming/c/import_cpp. …
Cレベルのエクスポートにしておけば、シンボルが関数名そのものになりますので、
DLLをdelphiでも呼び出せるようになります。
PCの不具合で大変お礼が大変遅れてしまい
まして申し訳ありません。
非常に参考になりとても助かりました。
なるほどそういうことだったのですね、
オーバーロードの機能と関係のあることとは
知りませんでした。
Delphiとの連携はC++の機能を使わずに行えば
問題なくできることを確認して、とてもすっきり
しました。ただ、ストリームを使わないとなると
なかなか大変ですね。おかげさまで C の勉強にも
なっています。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラム言語について c言語...
-
c++でテンプレートのコードでわ...
-
c言語
-
DLLファイルの逆コンパイラにつ...
-
C言語の関数のextern宣言
-
C言語について(初心者)
-
C言語について。
-
C言語をコンパイルするとコンピ...
-
C言語について。
-
変数名を引数として渡す、アド...
-
VisualStudioでC++クラスを追加...
-
スタックフレームの消滅
-
visual studio 2022でのC#プロ...
-
C言語 関数、変数の宣言について
-
c言語のリダイレクトによる円...
-
CPUが16bitでも32bitOSでコンパ...
-
0 == False はいいけど
-
インクリメント演算子のみを用...
-
C言語 配列と関数の練習問題
-
C言語の関数と配列に関する質問
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CommXのサイトを教えてください。
-
[delphi]コンポーネントの流用...
-
delphiで使うテキストボックス
-
C++ のDLLがdelphiで読めない
-
Delphi「TForm」の「T」って何?
-
0xffffとは?
-
8ビットのデータの、先頭ビット...
-
ライン数とステップ数の違いは?
-
C言語で128bitの2進数のビット...
-
レジストってなんですか?
-
アセンブラからC言語に変換する...
-
ビットシフトってどんな時使うの?
-
「ひまわり」と「なでしこ」の違い
-
[VBS] 素早くローテート演算したい
-
C言語によるウェイト
-
昔のゲーム製作に使用する言語...
-
シーケンサのデータレジスタD...
-
アセンブラ言語がわかりません。
-
PICの入出力切り替えの時間がプ...
-
一般のソフトで画像を扱う場合...
おすすめ情報