2016-11-30 227 views
3

我有一個使用第三方DLL的應用程序。在Visual Studio for Mac中有沒有一種方法可以編寫應用程序,以便像我在Windows上那樣訪問它?可以在Visual Studio Mac中使用DLL

+0

我很確定Visual Studio for Mac不會突然讓它在Macintosh上本地執行Windows二進制文件成爲可能。所以......除非我誤解你的問題,否。 –

+2

你應該聯繫第三方並要求他們的圖書館的Mac版本。 –

+0

我無法驗證它,但似乎.NET核心/標準DLL可能工作 – BradleyDotNET

回答

4

雖然你可能會認爲,因爲你有相同的名稱作爲Windows中的對應一個IDE它產生的二進制文件不可轉讓。

answer on Super User給出了一些詳細信息:

有一個在OS X,Linux或任何POSIX沒有真正的DLL文件對這一問題。 他們不做分化。

爲什麼?

很多Mac的東西,其中一個是獨立的(畢竟,.app的文件夾實際上只是 文件夾)。

雖然...

Another queston on SO問同樣的事情,回答說:

最後微軟發佈.NET的核心是完全的平臺 獨立。

...現在可以在Mac或Linux機器上開發.NET應用程序 使用輕量級IDE Visual Studio代碼和Visual Studio for Mac IDE已經在MacOS X上的Mono集成的地方發佈。

因此,如果您要使用的庫(DLL)的供應商已使用.NET Core框架創建了它的一個版本,那麼您可能很幸運。

3

這取決於:

  1. 管理的.NET的DLL: 可以導入和Windows
  2. 用同樣的方式在VS本土DLL:不能直接使用。您需要爲您的目標系統構建它,在您的情況下爲OSX。

如果你有C/C++代碼,你應該可以爲OSX(例如GCC)構建它,如果它沒有一些外部(Windows)平臺特定的代碼。然後你可以直接使用編譯的* .so/* .dylib文件。但是,您需要告訴.NET Runtime(例如OSX上的Mono)使用DllMap配置文件使用不同的文件(有關示例,請參閱http://www.mono-project.com/docs/advanced/pinvoke/dllmap/)。

您鏈接的源代碼看起來像是用於Unix的,所以能夠在OSX上構建它們的機會相當不錯(在Unix上有Makefile和生成的二進制文件將是libswe.so)。你可以嘗試將-dynamiclib參數傳遞給GCC獲得OSX特定libswe.dylib(What are the differences between .so and .dylib on osx?似乎是約dylib一個很好的答案)

如果您有您的DLL的OSX的二進制文件,你只需要一個配置文件爲您 。NET應用程序,它看起來是這樣的:

<configuration> 
    <dllmap os="osx" dll="libswe.dll" target="libswe.dylib"/> 
<configuration/> 

它告訴.NET運行時從libswe.dylib而不是libswe.dll導入的符號,如果當前的操作系統是OSX。

相關問題