所以我有三个部分:
- 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.dllexelibs
这只是一个过于简化的示例,我无法更改目录结构。但是我还能怎么解决这个问题呢?