
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ランキング
-
gccを行ってもexeファイルが生...
-
C#でTreeViewのCheckBoxのサイ...
-
C言語 列挙型(enum型)変数について
-
VisualStudioでC++クラスを追加...
-
Windows Formアプリからコンソ...
-
visual studio 2022でのC#プロ...
-
c言語
-
スタックフレームの消滅
-
C# で 数式文字列処理を処理す...
-
UART通信の取説で,left floati...
-
C++でデスクトップGUIアプリ開...
-
c#のTLS1.2での通信について
-
C言語 バッファについて。
-
C言語について(初心者)
-
VisualStudioで、コードを印刷...
-
VisualStudio2022でC言語プログ...
-
gcc13.2のバグ?
-
C言語でファクト関数を使わずに...
-
【C言語】全角文字の配列を、全...
-
大量のデータを読み込んで表示...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C++ のDLLがdelphiで読めない
-
Delphi4でTStringGridコントロ...
-
delph5 ボタンの色を変更するに...
-
Delphiのコンポーネントの作り...
-
Delphiはこのサイトに
-
delphiで使うテキストボックス
-
Delphiでの関数の戻り値を別の...
-
turbo delphi の無償版をインス...
-
CommXのサイトを教えてください。
-
0xffffとは?
-
8ビットのデータの、先頭ビット...
-
ライン数とステップ数の違いは?
-
ビットシフトってどんな時使うの?
-
レジストってなんですか?
-
アセンブラからC言語に変換する...
-
C言語で128bitの2進数のビット...
-
実行ファイルからソースはみれる?
-
シーケンス制御についての質問...
-
PS3に搭載されている"Cell"は、...
-
シーケンサのデータレジスタD...
おすすめ情報