所以我有三个部分:
- Lib:AC# 库,为 AnyCPU 编译。
- BridgeLib:一个 C++/CLI 库,为 x86 编译。它导出一个本地 C 函数
bridgeEntry
,并调用 Lib 中的方法。 - NativeExe:一个本机 C++ Win32 应用程序,只需加载 BridgeLib.dll 并执行
bridgeEntry
.
现在我将它们全部放在一个目录中,正如预期的那样,当我运行 NativeExe 时,会执行来自 Lib 的代码。
但是,如果我像这样重新排列目录结构:
├───exe
│ NativeExe.exe
│
└───libs
BridgeLib.dll
Lib.dll
事情有点不同。显然NativeExe.exe
在exe
文件夹中运行失败,因为它找不到BridgeLib.dll
. 但这可以通过转到libs
文件夹并运行来解决..\exe\NativeExe.exe
。现在应用程序加载BridgeLib.dll
并跳转到bridgeEntry
. 但是现在 CLR 崩溃了,因为它在可执行文件的文件夹 ( ) 中而不是在桥库的文件夹中FileNotFoundException
寻找。Lib.dll
exe
libs
这只是一个过于简化的示例,我无法更改目录结构。但是我还能怎么解决这个问题呢?