タグ

DLLに関するkoichi7777のブックマーク (8)

  • へろぱ的ブログ: C#でDLLを動的に呼び出すサンプル

    Windows APIをLoadLibrary, GetProcAddressを使用して動的に呼びたい時がありますよね。 例えば、共通アーカイバプロジェクトのDLLの機能を設定ファイルなどにより、機能追加したい場合とかそう思うのではないでしょうか? C#なプログラムでは、Visual Basic 6などの時のように、事前にDllImportやらで宣言してやらないといけないのかと思っていましたが、実は以下のようにして動的に呼べるようです。 using System; using System.Text; using System.Runtime.InteropServices; namespace ConsoleApplication1 {     class Program     {         [DllImport("kernel32.dll", EntryPoint = "L

  • ネイティブDLLを遅延バインディング(動的P/Invoke) - うぃずのひとりごと

    VB6.0時代に、どうしてもできないことがあった。それは、ネイティブDLLの遅延バインディング。 VBにはAPIを呼ぶためのDeclare宣言があったけど、呼び出すDLLはコーディングの段階で固定されてしまう。つまり、ビルドが完了した時点で、呼び出すDLLが決まってしまうということ。当然、アプリケーションを動かしている中で変更することはできない。一般に「動的な呼び出し」が出来ないのである。 .NET 2.0になって、ようやくその枷(かせ)が外れたのだけど、どのサンプルを見ても、LoadLibraryやらFreeLibraryやら、いろいろと準備と後始末に忙しい。 そこで、.NETによるネイティブDLLの遅延バインディングはどこまで簡略化できるのか。 試してみた。 C#のコンソールアプリケーションで、事前バインディングしていないWinAPIのMessageBox関数を呼び出す。以下がそのコー

  • DOBON.NET .NET Tips - 遅延バインディングによりアンマネージDLL関数を呼び出す

    遅延バインディングによりアンマネージDLL関数を呼び出す 統合アーカイバ仕様DLLを使ってファイルを圧縮、展開(解凍)するUnlha32.dllを使って書庫を展開する方法DllImportによるアンマネージDLL関数の呼び出し書庫を展開する遅延バインディングの意義遅延バインディングによる方法ついに完成!この記事への評価、コメント 遅延バインディングによりアンマネージDLL関数を呼び出す 統合アーカイバ仕様DLLを使ってファイルを圧縮、展開(解凍)するここでは.NETで外部のDLLの関数(アンマネージDLL関数)を呼び出す方法を考えます。しかもここでの最終目標は遅延バインディングによる方法です。その具体例として、MiccoさんのUNLHA32.DLLを使って書庫を展開(解凍)するコードを書いてみることにします。最終的には「統合アーカイバプロジェクト」に対応したあらゆるDLLを使って書庫を展開

    DOBON.NET .NET Tips - 遅延バインディングによりアンマネージDLL関数を呼び出す
  • DLL呼び出しとマーシャリング - とあるぷろぐらまーのぶろぐ

    http://www.microsoft.com/japan/msdn/net/compactframework/netcfintrointerp.aspx http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpguide/html/cpcondefaultmarshalingforvaluetypes.asp Felicaドライバを呼び出しIDを読み取る.NETプログラム VC++プログラムを以前作成したのだが、事前バインディングを使っていたため、Felica.dllがないと当然、EXE自体起動しない。 これを解決するため、遅延バインディングを使うやり方に変えたのだが、マネージドコードとアンマネージドコード間のマーシャリングの深い世界にどっぷりと嵌まった。 (今回、C#.NETにするのと正確には遅延ロードに変

    DLL呼び出しとマーシャリング - とあるぷろぐらまーのぶろぐ
  • DLLを作ろう!(関数編)

    今回はDLLを作ってみましょう! いきなり色々作るのも大変なんで、今回は関数をエクスポートしたDLLを作ってみましょう。 関数を作る意味 DLLに関数を作る意味は、なんでしょう? はっきり言って意味はないです。今度説明する「DLLにクラスを作る方法」を使えば、関数を入れるためにDLLを作る必要はなくなるでしょう。 ただ、もちろんクラスとは別に関数をAPIのような形で置きたいという場合もあるでしょう。MFCにもAfxなんたらというような形で、普通の関数があります。そういう関数を起きたい場合には、必要な方法と言えるでしょう。 プロジェクトの作製 まずはプロジェクトから。プロジェクトは「MFC AppWizard (DLL)」を選んでください。DLLは、別にMFCを使わなくても作れますが、たぶん使った方がずっと楽ですので、今回は使うことにします。 プロジェクト名を決めて「OK」ボタンを押したら、

  • VC++テクニック : DLLの作成(1)

    DLLの作成(1) ここでは、ごく簡単なDLLの作成方法と、その使用方法について説明する。 DLLの作成方法 DLLプロジェクトを生成する VC++の「ファイル」−「新規作成」メニューで新規作成ダイアログを開き、「プロジェクト」タブを選択する。 「MFC AppWizard(dll)」を選択し、プロジェクト名を「Test_DLL」としてOKボタンを押す。 次の画面で、「作成するDLLの種類」を「MFCの拡張DLL(MFCの共有DLL使用)」とし、終了ボタンを押す。 次の画面ではそのままOKボタンを押す。これでプロジェクトのスケルトンが完成する。 関数を追加する まずヘッダーを作成する。「ファイル」−「新規作成」メニューで新規作成ダイアログを開き、 「ファイル」タブを選択する。「C/C++ ヘッダー ファイル」を選択し、ファイル名を「TestMsgBox.h」とす

  • http://rararahp.cool.ne.jp/vc/vctips/dll.htm

    VCで作成できるDLLには、大きく分けてWin32DLL,MFCDLLがあります。 Win32DLLは、MFCを使用しないDLLです。 また、MFCDLLには、レギュラーDLLと、拡張DLLがあり、 レギュラーDLLが、MFCを内部的に利用するDLL, 拡張DLLが、MFCライブラリクラスから派生したクラスをDLLを作成するとき に使うDLLです。まず、Win32 DLLを説明します。DLL内の関数を他のプログラムから呼び出すには、 その関数をエクスポートする必要があります。 エクスポートするには、declspec(dllexport)キーワードを 使用するか、DEFファイルを使用する方法があります。また、DLLをリンクするには、以下の2つの方法があります。・暗黙的リンク(静的リンク) ・明示的リンク(動的リンク) このようにDLLには、作成、使用方法にいくつか種類があります。そ

  • Dependency Walker (depends.exe) Home Page

    Dependency Walker is a free utility that scans any 32-bit or 64-bit Windows module (exe, dll, ocx, sys, etc.) and builds a hierarchical tree diagram of all dependent modules. For each module found, it lists all the functions that are exported by that module, and which of those functions are actually being called by other modules. Another view displays the minimum set of required files, along with

  • 1