Mono DLL, чтобы открыть соответствующие Windows / Mac DLL / DyLib - PullRequest
2 голосов
/ 02 июля 2011

Я использую Mono для написания оболочки над набором встроенных команд.

Набор тот же (команды и подпись), однако он предоставляется через DLL в Windows и DyLib в Mac.

Мне было интересно, есть ли способ для меня создать только одну оболочку .NET / Mono DLL, в то время как она все еще находит нужную библиотеку для самостоятельного импорта.

Если так, какой будет синтаксис? Если нет, то какими будут определения компилятора, которые отделяют DllImport от 2 разных ОС, на которых я собирался?

РЕДАКТИРОВАТЬ: бонусные баллы для статической библиотеки (.a) вместо динамической библиотеки (.dylib) для части Mac, если это возможно даже с Mono.

Ответы [ 3 ]

3 голосов
/ 02 июля 2011

Возможно, вы захотите отправить конфигурационный файл карты dll, который сообщает Mono, какую библиотеку загружать на каждой платформе:

http://www.mono -project.com / Config_DllMap

2 голосов
/ 04 июля 2011

Если вы можете дать одинаковые имена обеим библиотекам, никаких изменений кода не потребуется вообще. По крайней мере, у меня так получилось в Windows / Linux с нативной библиотекой, написанной на C.

0 голосов
/ 02 июля 2011

Я бы использовал

#define MAC/WINDOWS

и

#if

внутри вашего кода. Затем вы используете -define WINDOWS или -define MAC при компиляции, чтобы вызывать DLL. Так что, по крайней мере, у вас будет одна кодовая база, или же вам нужно проверить среду, но это может быть сложно.

...