![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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で質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) IT初心者です 仕事で、vb.netで作成されたdllをvbaで呼び出すプログラムを作成しろと言われ 1 2023/03/27 08:22
- フリーソフト cygewf-2.dllがない、と表示され、ダウンロードしたファイルが動作しない 2 2023/03/27 11:05
- Windows 10 IT初心者です! powershellで以下のようなエラーが出ました オブジェクト参照がオブジェクト 1 2023/05/17 11:30
- ノートパソコン .dllファイルがありませんと表示される 5 2023/04/30 03:03
- その他(ソフトウェア) MMD PMXエディタ プラグイン 押せない はじめまして。MMDについて質問させていただきます。 7 2022/05/04 15:53
- その他(悩み相談・人生相談) 歌い手とイラストレーターになるのはずっと自分の夢で、アカウントを作ろうと思ったらいい名前が思い浮かば 5 2022/03/25 17:28
- その他(コンピューター・テクノロジー) パソ粥が壊れてしまい。 新しく買ったパソコンに Amplitued5 Max をダウンロードインスト 1 2022/05/22 00:33
- その他(Microsoft Office) Excel2019と365、2021 2 2023/07/08 06:22
- C言語・C++・C# 略語の読み方について 2 2023/05/25 12:35
- その他(妊娠・出産・子育て) 名付けについて 7 2022/09/08 20:00
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Delphiでのメモリリーク検出
-
0xffffとは?
-
エクセルVBAのIf,Then 構...
-
8ビットのデータの、先頭ビット...
-
レジストってなんですか?
-
ライン数とステップ数の違いは?
-
ビットシフトってどんな時使うの?
-
コンピュータ言語とプログラミ...
-
PICのC言語でキャリーオーバー
-
[C言語→アセンブリ言語]はどう...
-
CASL(アセンブラ言語)に関する...
-
算術シフト演算が成り立つ理由...
-
アセンブラからC言語に変換する...
-
PICの入出力切り替えの時間がプ...
-
シーケンサのデータレジスタD...
-
実行ファイルからソースはみれる?
-
CASLIIでかけ算
-
GCCの.cfi_系について
-
本気でマシン語を覚えたい
-
シーケンス制御についての質問...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
delphiで使うテキストボックス
-
メーラーを自作したいのですが
-
CommXのサイトを教えてください。
-
Delphiでの関数の戻り値を別の...
-
C++ のDLLがdelphiで読めない
-
0xffffとは?
-
エクセルVBAのIf,Then 構...
-
8ビットのデータの、先頭ビット...
-
情報科学の飽和演算、ラップア...
-
ビットシフトってどんな時使うの?
-
ライン数とステップ数の違いは?
-
アセンブラからC言語に変換する...
-
レジストってなんですか?
-
ものづくりに向いているプログ...
-
一般のソフトで画像を扱う場合...
-
文字参照は10進数と16進数では...
-
PICに書き込むプログラムや変数...
-
スロースキャンコンピュータ 加...
-
昔のゲーム製作に使用する言語...
-
[C言語→アセンブリ言語]はどう...
おすすめ情報