2

だから私は3つの部分を持っています:

  • Lib: AnyCPU 用にコンパイルされた AC# ライブラリ。
  • BridgeLib: x86 用にコンパイルされた C++/CLI ライブラリ。呼び出されたネイティブ C 関数をエクスポートしbridgeEntry、Lib のメソッドを呼び出します。
  • NativeExe: BridgeLib.dll をロードして実行するネイティブ C++ Win32 アプリケーションbridgeEntry

これらをすべて 1 つのディレクトリに配置すると、予想どおり、NativeExe を実行すると Lib のコードが実行されます。

ただし、次のようにディレクトリ構造を再配置すると:

├───exe
│       NativeExe.exe
│
└───libs
        BridgeLib.dll
        Lib.dll

物事は少し異なります。フォルダーが見つからないため、明らかにフォルダー内NativeExe.exeでの実行は失敗します。しかし、それはフォルダに移動して実行することで解決できます。これで、アプリケーションがロードされ、にジャンプします。しかし、ブリッジライブラリのフォルダーではなく、実行可能ファイルのフォルダー ( ) を探しているため、CLR は a でクラッシュします。exeBridgeLib.dlllibs..\exe\NativeExe.exeBridgeLib.dllbridgeEntryFileNotFoundExceptionLib.dllexelibs

これは非常に単純化された例であり、ディレクトリ構造を変更することはできません。しかし、他にどうすればこの問題を解決できますか?

4

1 に答える 1