我试图在一个带有mono的ubuntu容器中运行一个C#应用程序。应用程序在windows环境中正确运行。我刚把所有的目录都复制到了码头卷。
我可以使用以下命令构建应用程序,没有错误或警告:
MSBuildCSharpSampleLSV2.csproj /t:Rebuild /p:Configuration=Release /p:Platform="x86“
但是,当我尝试使用以下命令运行应用程序时:
MONO_LOG_LEVEL=debug mono CSharpSampleLSV2.exe
我遇到了一些类似的错误:
Mono: DllImport错误加载库'P_LSV2.DLL':'P_LSV2.DLL:无法打开共享对象文件:没有这样的文件或目录‘。
我不明白为什么我会犯这个错误。库位于与windows环境相同的位置。
如果需要更多的信息,我会提供。
发布于 2018-02-09 12:04:57
异常提示中提到了P_LSV2.DLL库的扩展“P_LSV2.DLL”,提示这也是您试图调用的特定于windows的本机库(DllImport建议使用pinvoke)。Linux本地库几乎总是有扩展".so“。所以,当您在linux上时,您试图从为windows编译的本机库中调用一些东西--这是行不通的。
.NET编译成IL (中间语言),然后在运行时将该语言编译为该代码正在执行的平台的本机代码。与此形成对比的是,本机库包含已编译好的目标平台代码。因此,在linux上不可能使用为windows平台编译的本机库。
因此,您需要在某个地方获取为linux编译的库。如果这样的版本不可用,源代码也不可用(从源代码您可以尝试为linux编译,尽管这可能不容易)-你运气不好。
https://stackoverflow.com/questions/48705159
复制相似问题