首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在linux上尝试将Mpir.NET与F#结合使用

在linux上尝试将Mpir.NET与F#结合使用
EN

Stack Overflow用户
提问于 2019-10-28 17:04:12
回答 2查看 59关注 0票数 1

我想在Ubuntu18.04上使用Mpir.NET和F# (4.5),在命令行上使用dotnet。不成功。如果有更简单的方法在Mpir.NET linux上使用,请提供建议。

遵循https://learn.microsoft.com/en-us/dotnet/fsharp/get-started/get-started-command-line的dotnet指令。使用Newtonsoft.Json包的示例项目运行良好,当我构建一个项目来测试Mpir.NET时,我得到了一个错误,如下所述。

代码语言:javascript
复制
dotnet new sln -o MpirProj
dotnet new console -lang F# -o src/App

用Mpir.NET文档中的程序替换src/App/Program.fs:

代码语言:javascript
复制
open Mpir.NET

let a = 756749075976907490175905790287846502134Z
let b = 529134916478965674697197076070175107505Z
let c = a*b 
printfn "%O" c

代码语言:javascript
复制
 dotnet add src/App/App.fsproj package Mpir.NET

我收到以下信息/警告消息:

警告:软件包'Mpir.NET 0.4.0‘是使用'.NETFramework,Version=v4.6.1’而不是项目目标框架'.NETCoreApp,Version=v2.1‘恢复的。此软件包可能与您的项目不完全兼容。信息:包'Mpir.NET‘与项目'src/App/App.fsproj’中所有指定的框架兼容。信息:'/home/doug/f#favs/MpirProj/src/App/App.fsproj'.文件中添加的软件包“Mpir.NET”版本“0.4.0”的PackageReference

代码语言:javascript
复制
dotnet sln add src/App/App.fsproj

生成的App.fsproj文件是:

代码语言:javascript
复制
<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>

做构建

代码语言:javascript
复制
dotnet build

消息

/home/doug/f#favs/MpirProj/src/App/App.fsproj :警告NU1701: Package 'Mpir.NET 0.4.0‘已使用'.NETFramework,Version=v4.6.1’而不是项目目标框架'.NETCoreApp,Version=v2.1‘恢复。此软件包可能与您的项目不完全兼容。App -> ->

建造成功。

当我运行时,请参阅下面的错误消息

代码语言:javascript
复制
~/f#favs/MpirProj/src/App$ dotnet run

消息

/home/doug/f#favs/MpirProj/src/App/App.fsproj :警告NU1701: Package 'Mpir.NET 0.4.0‘已使用'.NETFramework,Version=v4.6.1’而不是项目目标框架'.NETCoreApp,Version=v2.1‘恢复。此软件包可能与您的项目不完全兼容。/home/doug/f#favs/MpirProj/src/App/App.fsproj :警告NU1701: Package 'Mpir.NET 0.4.0‘已使用'.NETFramework,Version=v4.6.1’而不是项目目标框架'.NETCoreApp,Version=v2.1‘恢复。此软件包可能与您的项目不完全兼容。

未处理的异常: System.TypeInitializationException:“Mpir.NET.mpir”的类型初始化程序引发了一个异常。-> System.Exception: MPIR:无法确定xmpir.so在Mpir.NET.mpir.LocateLibrary(String name)、Mpir.NET.mpir.GetXMPIRLibraryPath() at Mpir.NET.mpir.initialize_hxmpir()在Mpir.NET.mpir..cctor()处的路径--内部异常堆栈跟踪的结束-- at Mpir.NET.mpir.mpz_init_set_str(String str )/home/doug/f#favs/MpirProj/src/App/Program.fs:line 3中的Mpir.NET.NumericLiteralZ.FromString(String s) at .$Program.main@()

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-28 18:14:46

您会看到这个问题,因为包是针对.NET框架的,但是您正在Ubuntu上构建和运行.NET核心。为了兼容性而引用.NET框架.dlls只在Windows上工作(如果它在其他地方工作,这基本上只是巧合)。

我建议更新这个包以支持.NET核心,或者找到一个.NET核心兼容的替代方案。

票数 2
EN

Stack Overflow用户

发布于 2019-11-02 22:41:52

我在windows 10上试用了Mpir.NET,执行时间比使用F# bigintegers要慢得多。

我喜欢关于F#的很多东西,但是bigintegers的速度很慢,而且似乎没有其他的选择。

用F#处理Pollard分解问题的最佳时间是28秒。在Ocaml上使用完全相同的算法(Windows 10、Ubuntu和Fedora),它们的运行时间都是10秒。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58595334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档