7

私は C++ の「隠された/暗い場所」に不慣れで、別のディレクトリまたは現在の実行可能ファイルが実行されているディレクトリ内のサブディレクトリから .dll ファイルをロードする方法を考えていました。

元:

./MyAppDirectory
  /MyApp.exe
  /SomeDLL.dll
  /AnotherDLL.dll
  /SubDirectory
    /SomeDLL2.dll
    /AnotherDLL2.dll
    /YetAnotherDLL.dll
    /...

したがって、「MyApp.exe」はルートフォルダー「MyAppDirectory」から「SomeDLL.dll」と「AnotherDLL.dll」を自動的にロードしますが、「SomeDLL2.dll」、「AnotherDLL2.dll」、「YetAnotherDLL. 「MyAppDirectory」フォルダー内の「SubDirectory」フォルダーから「.dll」などをダウンロードします。

私はいくつかの検索を行ってきましたが、私が見つけた唯一の解決策は次のとおりです。

  • 1) 実行可能ファイルの作業ディレクトリを変更します。
  • 2) DLL ファイルを Windows ルートに配置します。
  • 3) PATH 環境変数を変更します。

しかし、それらにはすべていくつかの悪い面があり (ここで言及する価値はありません)、それは私が実際に必要としているものではありません。また、別の解決策は、「アプリケーション固有のパス!」を使用することです。これには Windows レジストリの操作が含まれ、前述のものよりもわずかに優れているようです。

ただし、外部メソッドを使用する必要なく、C++ を使用して「MyApp.exe」内でこれを実行できる必要があります。

MinGW 4.7.2 を使用しており、IDE は Code::Blocks 12.11 で、OS は Windows XP SP3 Pro x86 です。

参考文献、チュートリアル、ドキュメント、例などはすべて受け入れられます。お時間をいただきありがとうございます:D

4

2 に答える 2

1

使用する必要があります

LoadLibrary("subFolder\\dynamicLibrary.dll");

それはDLLへの明示的なリンクです。暗黙のリンクよりも少し難しいです(あなたが使用しているものだと思います)が、これが目的を達成する正しい方法だと思います

明示的

暗黙

于 2013-07-02T08:31:56.453 に答える