Isis2 ライブラリの新しいバージョンを Windows 上の .NET から Mono/Linux に移植しようとしています。この新しいコードは MemoryMappedFile オブジェクトを使用しており、Mono.Posix.Helper ライブラリで突然問題が発生しています。次のテスト プログラムを正常にコンパイルして実行できれば、問題は解決すると思います。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.MemoryMappedFiles;
namespace foobar
{
class Program
{
static int CAPACITY = 100000;
static void Main(string[] args)
{
MemoryMappedFile mmf = MemoryMappedFile.CreateNew("test", CAPACITY);
MemoryMappedViewAccessor mva = mmf.CreateViewAccessor();
for (int n = 0; n < CAPACITY; n++)
{
byte b = (byte)(n & 0xFF);
mva.Write<byte>(n, ref b);
}
}
}
}
... 現在、これを Mono でコンパイルしようとすると、当惑するような一連のリンカー エラーが発生します。私の LD_LIBRARY_PATH には、そのファイルを含むディレクトリが含まれていますが、libMonoPosixHelper.so が見つからないようです。その段階で、「System.NotImplementedException: 要求された機能が実装されていません」というメッセージが表示されます。実行時に。しかし、CreateNew メソッドの Mono 実装を見てきました。完全に実装されているようで、CreateViewAccessor メソッドについても同じことが言えます。このように、Mono ライブラリにリンクするときに何かがうまくいかないような気がします。
Mono で MemoryMappedFile オブジェクトを使用した経験のある人はいますか? ここや他のサイトでこの種の問題についてかなりの数の質問を見かけますが、すべて古いスレッドのようです...