我想在 Ubuntu 18.04 上使用 Mpir.NET 和 F# (4.5),在命令行上使用 dotnet。不成功。如果有更简单的方法在 F# linux 上使用 Mpir.NET,请告知。
遵循https://docs.microsoft.com/en-us/dotnet/fsharp/get-started/get-started-command-line上的 dotnet 说明 。使用 Newtonsoft.Json 包的示例项目运行良好当我构建一个项目来测试 Mpir.NET 时,我收到如下所述的错误。
dotnet new sln -o MpirProj
dotnet new console -lang F# -o src/App
将 src/App/Program.fs 替换为 Mpir.NET 文档中的程序:
open Mpir.NET
let a = 756749075976907490175905790287846502134Z
let b = 529134916478965674697197076070175107505Z
let c = a*b
printfn "%O" c
dotnet add src/App/App.fsproj package Mpir.NET
我收到以下信息/警告消息:
警告:使用“.NETFramework,Version=v4.6.1”而不是项目目标框架“.NETCoreApp,Version=v2.1”恢复包“Mpir.NET 0.4.0”。此软件包可能与您的项目不完全兼容。info : 包“Mpir.NET”与项目“src/App/App.fsproj”中的所有指定框架兼容。信息:包'Mpir.NET'版本'0.4.0'的PackageReference添加到文件'/home/doug/f#favs/MpirProj/src/App/App.fsproj'。
dotnet sln add src/App/App.fsproj
生成的 App.fsproj 文件是:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Compile Include="Program.fs" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Mpir.NET" Version="0.4.0" />
</ItemGroup>
</Project>
做构建
dotnet build
消息
/home/doug/f#favs/MpirProj/src/App/App.fsproj:警告 NU1701:使用“.NETFramework,Version=v4.6.1”而不是项目目标框架恢复包“Mpir.NET 0.4.0” '.NETCoreApp,版本 = v2.1'。此软件包可能与您的项目不完全兼容。应用程序-> /home/doug/f#favs/MpirProj/src/App/bin/Debug/netcoreapp2.1/App.dll
构建成功。
当我运行时,请参阅下面的错误消息
~/f#favs/MpirProj/src/App$ dotnet run
消息
/home/doug/f#favs/MpirProj/src/App/App.fsproj:警告 NU1701:使用“.NETFramework,Version=v4.6.1”而不是项目目标框架恢复包“Mpir.NET 0.4.0” '.NETCoreApp,版本 = v2.1'。此软件包可能与您的项目不完全兼容。/home/doug/f#favs/MpirProj/src/App/App.fsproj:警告 NU1701:使用“.NETFramework,Version=v4.6.1”而不是项目目标框架恢复包“Mpir.NET 0.4.0” '.NETCoreApp,版本 = v2.1'。此软件包可能与您的项目不完全兼容。
未处理的异常:System.TypeInitializationException:“Mpir.NET.mpir”的类型初始化程序引发异常。---> System.Exception: MPIR: can't determine path to the xmpir.so at Mpir.NET.mpir.LocateLibrary(String name) at Mpir.NET.mpir.GetXMPIRLibraryPath() at Mpir.NET.mpir.initialize_hxmpir () 在 Mpir.NET.mpir..cctor() --- 内部异常堆栈跟踪结束 --- 在 Mpir.NET.mpir.mpz_init_set_str(String str, UInt32 _base) 在 Mpir.NET.NumericLiteralZ.FromString(String s) 在/home/doug/f#favs/MpirProj/src/App/Program.fs:line 3 中的 .$Program.main@()