Delphiで直接使用できないDll

解決


ミン  2012-05-15 19:25:11  No: 42185

Delphiから直接呼び出せないDLLってどんなケースですか?
具体例などありましたら教えてください。


Mr.XRAY  2012-05-16 05:11:31  No: 42186

こんにちは,Mr.XRAYと申します.

「Delphiから直接呼び出せない」って,どういう状況のことなんでしょうか?
間接的になら呼び出せるんですか?
もっとも,間接的と直接的の意味も分からないのですが.

また,「DLLを呼び出す」というのはどういう意味なのでしょう?


Mr.XRAY  2012-05-16 05:20:50  No: 42187

スミマセン.私が解釈したDLLは,
Dynamic Link Library(ダイナミックリンクライブラリ)でした.
別の意味の略語のことなんですね.きっと.

申し訳ありませんでした.おととい,出直してきます.


igy  2012-05-16 05:21:37  No: 42188

プロセスの相互運用性
http://ht-deko.minim.ne.jp/tech070.html#0108

>64bit DLL を Win32 アプリケーションから利用したり、32bit DLL を Win64 アプリケーションから利用する事はできません。

のようなことでしょうか?


ミン  2012-05-16 20:50:13  No: 42189

説明がへたくそですいません。

例えばCで書かれたDLLの関数を使用する際に注意すること等ありますでしょうか?


Nov  2012-05-16 21:13:28  No: 42190

呼出規約をあわせるくらいでしょうか。

http://docwiki.embarcadero.com/RADStudio/ja/%E6%89%8B%E7%B6%9A%E3%81%8D%E3%81%A8%E9%96%A2%E6%95%B0#.E5.91.BC.E3.81.B3.E5.87.BA.E3.81.97.E8.A6.8F.E7.B4.84


Mr.XRAY  2012-05-16 21:46:51  No: 42191

>例えばCで書かれたDLLの関数を使用する際に注意すること等ありますでしょうか?

例えば,Delphiで,Windows APIの関数を使用するとします.
これらは,Windowsが提供しているDLLの中にある関数です.
そして,これらは,おそらく,Cで書かれています.

一般的に,関数類をDLL内に置く,書くということは,他の言語からも使用可能に
なることになります.
だからこそ,Windowsが提供しているこれらのDLL内の関数が他の言語からも利用
可能となっているわけです.
もちろん,特別な目的で,Delphiからしか利用できないもの,あるいは,そのように
DLLを作ることもあります.

ですから,DLL内の関数類を使用する際の注意というのは,それらの関数を使用する
際の注意ということになります.
これは,使用する関数によっても異なることになります.

注意と言えば,既にレスがありますが,
DLL内の関数は,通常,その関数を使用するための定義文が必要ですが,
Delphiには,既に多くの関数の定義があります.
しかし,WindowsがDLLで提供している関数の全ての定義があるわけではありません.
これは,Delphiのバージョンにもよります.
Delphiで定義されていない関数は,自分で定義を作成して利用することになります.
その時,元はCで書かれていますから,引数の型を,Delphiの型に変換する際には,
注意が必要かも知れません.

>具体例などありましたら教えてください。

具体的な問題が発生すれば,その時に訊いてみるのがいいのではないでしょうか.

参考  [VCL で未定義の Win32 API 関数の使用]
http://mrxray.on.coocan.jp/Delphi/Others/Usage_Win32API.htm

# 既にDelphiで何らかのブログラムを作成しているのであれば,知らないうちに
# Windowsが提供しているDLLの関数,つまりCで作成されたDLL内の関数を使って
# いることでしょう


ミン  2012-05-16 22:33:18  No: 42192

了解しました。
呼び出し規約を合わせることは必要ですね。

> 具体的な問題が発生すれば,その時に訊いてみるのがいいのではないでし
> ょうか.

Mr.XRAYさんが言うように実際に使用してみてまたわからないことがあれば質問したいと思います。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加