Я пытаюсь перенести новую версию библиотеки Isis2 из .NET в Windows в 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, я получаю ошеломляющий набор ошибок компоновщика: кажется, не удается найти libMonoPosixHelper.so, хотя мой LD_LIBRARY_PATH включает каталог, содержащий этот файл, а затем, если мне удастся пройти мимо на этом этапе я получаю «System.NotImplementedException: запрошенная функция не реализована». во время выполнения. Тем не менее, я просмотрел реализацию метода CreateNew в Mono; он кажется полностью реализованным, и то же самое верно для метода CreateViewAccessor. Таким образом, у меня есть ощущение, что что-то идет не так при связывании с библиотеками Mono.
Есть ли у кого-нибудь опыт работы с объектами MemoryMappedFile в Mono? Я вижу довольно много вопросов по этому поводу здесь и на других сайтах, но все они кажутся старыми темами...