Я использую несколько P / Invokes под .NET.Однако я хочу, чтобы моя библиотека работала как в Windows, так и в Linux, предпочтительно с одними и теми же двоичными файлами.
Поскольку нативная библиотека, от которой я зависел, доступна на нескольких платформах, я надеялся, что они будут только вместе с моей управляемой библиотекой.Двоичные файлы библиотеки.
Сейчас я использую что-то вроде этого:
[DllImport("/usr/lib/libMYLIBNAME.so.1")]
Но это, очевидно, работает только для Linux.Я подумывал, что я мог бы скопировать этот двоичный файл из / usr / lib и распространять вместе с моим приложением, поэтому я мог бы уменьшить это до:
[DllImport("libMYLIBNAME.so")]
Но это все еще только для Linux.
Есть ли в любом случае изменить строку имени библиотеки, чтобы она искала libMYLIBNAME.so в Linux и MYLIBNAME.dll в Windows, или что-то очень похожее?
Я бы хотел избежать всего, что требует перекомпиляциидля каждой поддерживаемой платформы ...
(Примечание: еще лучше будет решение, которое будет искать MYLIBNAME.dll в Windows и /usr/lib/libMYLIBNAME.so.1 в Linux, но это улучшениепо желанию)