如何修复 'cannot open shared object file: No such file or directory' 错误?

How to fix 'cannot open shared object file: No such file or directory' error?

我正在尝试 运行 ubuntu Docker 带有单声道的容器中的 C# 应用程序。应用程序 运行 在 windows 环境中正确运行。我只是将所有目录复制到 docker 卷。

我可以使用以下命令构建应用程序而不会出现错误或警告:

msbuild CSharpSampleLSV2.csproj /t:Rebuild /p:Configuration=Release /p:Platform="x86"

但是当我尝试使用以下命令 运行 应用程序时:

MONO_LOG_LEVEL=debug mono CSharpSampleLSV2.exe

我遇到了一些这样的错误:

Mono: DllImport error loading library 'P_LSV2.DLL': 'P_LSV2.DLL: cannot open shared object file: No such file or directory'.

我不明白为什么会出现此错误。这些库位于与 windows 环境相同的位置。

如果需要更多信息,我会提供。

异常中提到的 P_LSV2.DLL 库的扩展名“.dll”暗示这是 windows 特定的本机库,您也正在尝试 pinvoke(DllImport 建议 pinvoke)。 Linux 本机库几乎总是具有扩展名“.so”。因此,当您在 linux 上时,您试图从为 windows 编译的本机库中调用某些内容 - 这是行不通的。

.NET 编译成 IL(中间语言),然后在运行时将该语言编译成该代码在其上执行的平台的本机代码。与之相反 - 本机库包含已为目标平台编译的代码。因此,在 linux.

上无法使用为 windows 平台编译的本机库

所以你需要在某处获取为 linux 编译的库。如果这样的版本不可用并且源代码也不可用(从源代码你可以尝试为 linux 编译,尽管这可能并不容易)——你运气不好。