是否可以在Visual Studio Mac中使用DLL

时间:2016-11-30 00:16:51

标签: c# visual-studio-mac

我有一个使用第三方DLL的应用程序。在Visual Studio for Mac中是否有一种方法可以像在Windows上一样编写应用程序来访问它?

2 个答案:

答案 0 :(得分:5)

取决于:

  1. 托管.NET DLL: 可以像在Windows上的VS中一样导入和使用
  2. 原生DLL:无法直接使用。在您的情况下,您需要为目标系统构建它,OSX。
  3. 如果你有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框架创建了它的版本,那么您可能很幸运。