繁体   English   中英

为什么 OR-Tools 不能在 C#/Linux 中加载?

[英]Why OR-Tools doesn't load in C#/Linux?

我在 C# 中有一个简单的程序,它在 Ubuntu 21.04 上使用 OR-Tools 9.2.9972,但即使将共享库复制到bin文件夹中,它也会返回无法加载库。 我尝试了命令dotnet add package但错误仍然存在。

无法加载共享库“google-ortools-native”或其依赖项之一。

知道如何将这些共享库添加到项目中吗?

using System;
using Google.OrTools.LinearSolver;

public class SimpleLpProgram
{
  static void Main()
  {
    Console.WriteLine("Starting");

    Solver solver = Solver.CreateSolver("GLOP"); // linking error

    Variable x = solver.MakeNumVar(0.0, double.PositiveInfinity, "x");
  }
}

项目文件

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <LangVersion>8.0</LangVersion>
    <TargetFrameworks>net6.0</TargetFrameworks>
    <EnableDefaultItems>false</EnableDefaultItems>
    <EnableDefaultCompileItems>false</EnableDefaultCompileItems>
    <!-- see https://github.com/dotnet/docs/issues/12237 -->
    <RollForward>LatestMajor</RollForward>
    <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
    <AssemblyName>Google.OrTools.SimpleLpProgram</AssemblyName>
    <Version>9.2.9972</Version>

    <!-- Nuget Properties -->
    <Description>Simple App consuming Google.OrTools package</Description>

    <!-- Pack Option -->
    <IsPackable>true</IsPackable>
    <Title>Google.OrTools.SimpleLpProgram v9.2.9972</Title>
    <PackageId>Google.OrTools.SimpleLpProgram</PackageId>
    <PackageTags>sample</PackageTags>
    <IncludeSymbols>true</IncludeSymbols>
    <SymbolPackageFormat>snupkg</SymbolPackageFormat>

    <!-- Signing -->
    <SignAssembly>false</SignAssembly>
    <PublicSign>false</PublicSign>
    <DelaySign>false</DelaySign>
  </PropertyGroup>

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugType>full</DebugType>
    <Optimize>true</Optimize>
    <GenerateTailCalls>true</GenerateTailCalls>
  </PropertyGroup>

  <!-- Dependencies -->
  <PropertyGroup>
    <RestoreSources>../../../packages;$(RestoreSources);https://api.nuget.org/v3/index.json</RestoreSources>
  </PropertyGroup>

  <ItemGroup>
    <Compile Include="SimpleLpProgram.cs" />
    <PackageReference Include="Google.OrTools" Version="9.2.9972" />
    <PackageReference Include="Google.OrTools.runtime.linux-x64" Version="9.2.9972" />
  </ItemGroup>
</Project>

在此处输入图像描述

哇。 原因是 glibc 不匹配...我将 Glib 2.34 附带的 Ubuntu 更新为 21.10,并且它有效。

前:

$ ldd google-ortools-native.so

./google-ortools-native.so: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /home/daniel/.nuget/packages/…/libortools.so)
    linux-vdso.so.1 (0x00007fffd39b6000)
    libortools.so => /home/daniel/.nuget/packages/…/libortools.so (0x00007fabb3407000)
    libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fabb31dc000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fabb308e000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fabb3073000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fabb2e85000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fabb2e69000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fabb530a000)
$ ldd --version

ldd (Ubuntu GLIBC 2.33-0ubuntu5) 2.33
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM