У меня есть приложение, использующее стороннюю DLL. Есть ли способ в Visual Studio для Mac написать приложение для доступа к нему так же, как я могу в Windows?
Можно ли использовать библиотеки DLL с Visual Studio Mac
Ответы (2)
По-разному:
- Управляемая .NET DLL: может быть импортирована и использована так же, как в VS в Windows.
- Собственная DLL: не может использоваться напрямую. Вам нужно будет создать его для вашей целевой системы, в вашем случае OSX.
Если у вас есть код C / C ++, вы сможете собрать его для OSX (например, с помощью GCC), если у него нет кода, специфичного для внешней (Windows) платформы. Затем вы можете напрямую использовать скомпилированный файл * .so / * .dylib. Но вам нужно указать среде выполнения .NET (например, Mono в OSX) использовать другой файл с помощью файла конфигурации DllMap (см. http://www.mono-project.com/docs/advanced/pinvoke/dllmap/ для примеров).
Связанные вами источники выглядят так, как будто они предназначены для Unix, поэтому шансы собрать их на OSX довольно высоки (есть Makefile, и полученный двоичный файл будет libswe.so в Unix). Вы можете попробовать передать параметр -dynamiclib
в GCC, чтобы получить libswe.dylib для OSX (В чем разница между .so и .dylib на osx? кажется хорошим ответом на dylib)
Если у вас есть двоичный файл вашей DLL для OSX, вам просто нужен файл конфигурации для вашего .NET-приложения, который может выглядеть следующим образом:
<configuration>
<dllmap os="osx" dll="libswe.dll" target="libswe.dylib"/>
<configuration/>
Он сообщает среде выполнения .NET импортировать символы из libswe.dylib
вместо libswe.dll
, если текущая ОС - OSX.
No.
Хотя вы можете подумать, что из-за того, что у вас есть IDE с тем же именем, что и у аналога Windows, создаваемые ею двоичные файлы не подлежат передаче.
ответ о суперпользователе дает дополнительную информацию:
В OS X, Linux или любом другом POSIX нет настоящих DLL. Они не делают различий.
Почему?
Многие вещи Mac, например, автономны (в конце концов, .app - это просто папки).
Хотя ...
Еще один квест по SO спрашивает то же самое, и в ответе говорится:
Наконец, Microsoft выпустила .NET Core, полностью независимую от платформы.
... теперь приложения .NET можно разрабатывать на компьютере Mac или Linux с использованием облегченной среды IDE Visual Studio Code, и была выпущена среда разработки Visual Studio для Mac, в которой интегрирован Mono для MacOS X.
Поэтому, если поставщик библиотеки (DLL), которую вы хотите использовать, создал ее версию с платформой .NET Core, вам может повезти.