我有一个使用第三方DLL的应用程序。在Visual Studio for Mac中是否有一种方法可以像在Windows上一样编写应用程序来访问它?
答案 0 :(得分:5)
取决于:
如果你有C / C ++代码,你应该能够为OSX(例如GCC)构建它,如果它没有一些外国(Windows)平台特定的代码。然后,您可以直接使用编译的* .so / * .dylib文件。但是您需要告诉.NET运行时(例如在OSX上使用Mono)使用DllMap配置文件来使用不同的文件(例如,请参阅http://www.mono-project.com/docs/advanced/pinvoke/dllmap/)。
你链接的来源看起来像是Unix,所以在OSX上构建它们的机会非常好(那里有一个Makefile,结果二进制文件就是libswe。所以在Unix上)。您可以尝试将-dynamiclib
参数传递给GCC以获取特定于OSX的libswe.dylib(What are the differences between .so and .dylib on osx?似乎是一个关于dylib的好答案)
如果你有适用于OSX的DLL的二进制文件,你只需要一个.NET应用程序的配置文件,它可能如下所示:
<configuration>
<dllmap os="osx" dll="libswe.dll" target="libswe.dylib"/>
<configuration/>
如果当前操作系统是OSX,它告诉.NET运行时从libswe.dylib
而不是libswe.dll
导入符号。
答案 1 :(得分:4)
没有
虽然您可能认为因为您的IDE与Windows对应的名称相同,但它生成的二进制文件不可转让。
answer on Super User提供了更多信息:
在OS X,Linux或任何POSIX中没有真正的DLL。 他们没有区别对待。
为什么?
很多Mac的东西,其中一个,是独立的(.app真的只是 文件夹毕竟。)
<强>虽然... 强>
Another queston on SO问同样的事情,答案是:
最后微软发布了完全平台的.NET Core 独立的。
...现在可以在Mac或Linux机器上开发.NET应用程序 使用轻量级IDE Visual Studio代码和Visual Studio for Mac 已经发布了集成了MacOS X上Mono的IDE。
因此,如果您要使用的库(DLL)的供应商使用.NET Core框架创建了它的版本,那么您可能很幸运。