2012-09-10 164 views
0

我已經在C++中編寫了一個在c#應用程序上完美運行的dll。 它是這樣的平臺獨立的c + + DLL

#include "stdafx.h" 
#include "fun.h" 

extern "C" __declspec(dllexport)double Add(double a, double b,double k); 
extern double Add(double a, double b,double k) 
{ 
    return a+b+k; 
} 

現在我想運行在MAC apps..what的變化,我需要在我目前的DLL這同一個DLL?

+3

你不能寫獨立於平臺的dll。他們依賴於體系結構(x86或x64),只能在windows上工作。在linux上你有.so和mac,你有.dylib作爲共享庫。 – victorsavu3

+0

你應該熟悉其他平臺。語言是一樣的,但庫和編譯器通常是不同的。所以整個編譯過程也會有所不同。工作量取決於您在DLL中使用的大小和庫。 – bcelary

+0

你打算如何在Mac上運行C#應用程序?如果沒有,那麼誰會使用你的圖書館? – MSalters

回答

4

您無法創建在Windows和Mac上加載的DLL。您需要重新編譯Mac代碼。

+0

我可以在Mac上編譯C++ dll嗎? 米新的MAC .. –

+1

當然。您只需要Mac的C++編譯器。 –

+0

如果您使用的是其他開發平臺,則需要交叉編譯器,或者在適當的MAC開發環境中進行編譯。 –

0

你不能在mac上運行任何DLL。 Mac有它自己的動態加載庫。

+1

如果不是「動態加載庫」,「dll」意味着什麼?這是一個糟糕的詞彙選擇,因爲結果不像一個圖書館,但更像一個單一的對象。但這是我放棄的一場戰鬥 - 即使在Linux下,每個人都稱它們爲DLL。 –

0

如果你堅持使用c#我相信你有2個選項。第一個選項是查看您的代碼是否在mac上以單聲道運行。爲此,您將創建macintosh可執行文件和動態庫。

http://www.mono-project.com/Mono:OSX

http://lipsky.me/2012/7/21/calling-a-dynamic-library-from-monomac-part-1

二是使用.NET 2.0或更低,看看你的應用程序將在Macintosh上運行的酒。不要在你的代碼中使用任何.NET 3.X或更高版本,因爲.NET 3.X或更高版本不會安裝或在wine中遇到很多問題。

http://appdb.winehq.org/objectManager.php?sClass=version&iId=3754