
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ランキング
-
C++ のDLLがdelphiで読めない
-
Delphiでの関数の戻り値を別の...
-
Delphi4でTStringGridコントロ...
-
インラインアセンブラの関数に...
-
PowerPC用逆アセンブラを知りま...
-
実行ファイルからソースはみれる?
-
ビットデータの取得方法について
-
2アドレス方式について
-
DoJaで多倍長演算する方法
-
ATtiny2313のヒューズビットOSCCAL
-
CやC++の言語について
-
PICでスピードメーターを作...
-
株式会社レジスタって所からNTT...
-
x86系でリアル←→プロテクトモー...
-
RTCの通信方法(I2C、S...
-
MASMの機種依存についてお尋ね...
-
メモリアドレスについて
-
PS3に搭載されている"Cell"は、...
-
分解能10msのタイマー(dosで)
-
Windowsはいったい何言語で書か...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CommXのサイトを教えてください。
-
delph5 ボタンの色を変更するに...
-
C++ のDLLがdelphiで読めない
-
Delphiでの関数の戻り値を別の...
-
0xffffとは?
-
8ビットのデータの、先頭ビット...
-
ライン数とステップ数の違いは?
-
アセンブラからC言語に変換する...
-
レジストってなんですか?
-
C言語で128bitの2進数のビット...
-
実行ファイルからソースはみれる?
-
ビットシフトってどんな時使うの?
-
文字参照は10進数と16進数では...
-
エクセルVBAのIf,Then 構...
-
PIC16F1シリーズマイコンのNCO...
-
シーケンサのデータレジスタD...
-
03分22秒36のような時間の単位...
-
一般のソフトで画像を扱う場合...
-
アセンブラのLA
-
電化製品って何言語?
おすすめ情報