我們爲C#.NET和Apple iPad都有一個應用程序。此應用程序將執行類似的功能。爲此,我們有一個協議層,我們正在考慮將其保留爲通用代碼。爲此,我們正在考慮爲協議模塊創建一個C++ dll,以便它可以在C#和iPad上使用。創建一個C++的DLL,我有一個基本的問題:DLL項目應該是跨平臺使用的類型
在創建一個DLL項目時,我們應該選擇哪個選項?我們可以爲MFC,Win32,ATL等創建一個dll。對我的需求來說,最好的選擇是什麼?
我們爲C#.NET和Apple iPad都有一個應用程序。此應用程序將執行類似的功能。爲此,我們有一個協議層,我們正在考慮將其保留爲通用代碼。爲此,我們正在考慮爲協議模塊創建一個C++ dll,以便它可以在C#和iPad上使用。創建一個C++的DLL,我有一個基本的問題:DLL項目應該是跨平臺使用的類型
在創建一個DLL項目時,我們應該選擇哪個選項?我們可以爲MFC,Win32,ATL等創建一個dll。對我的需求來說,最好的選擇是什麼?
您不應該使用MFC,因爲這些Microsoft Foundation Classes在iOS上不可用。可能Win32是你最好的猜測 - 但是如果你想在非Windows環境下使用DLL,請確保不要包含任何非標準的Windows頭文件。
我會建議在這兩種環境下經常編譯你的文件。如果您需要高級功能,您可能還想查看多平臺庫,如boost。
我推薦在Windows和iOS上查看Mono來構建C#應用程序。
如果您想要定位iPad,則需要爲iOS構建而不是Mac OS。
您不能爲iOS創建動態鏈接庫,只能建立靜態庫。請注意,在iOS上有與DLL類似的東西,但是隻有Apple可以構建它們(或者如果您的iPad已越獄,您可以自己構建它們,但這會使應用程序不符合AppStore的要求)。
iOS與Windows無關,因此Win32庫不會在iOS上運行。您的通用「協議模塊」(如果您的意思是可以通過TCP/IP或類似方式連接到其他設備的低級代碼)需要根據運行的平臺而有顯着差異。
謝謝。我如何編譯C#和Mac OS的代碼?我需要保持同一個來源並執行此任務。這可能嗎? – Vishy
嗨,正如你已經表明你想把你的通用代碼放在一個C++ DLL中。在開發這個DLL時,我認爲你必須使用XCode來檢查iOS兼容性和另一個IDE(例如eclipse,Visual Studio)來爲Windows構建。您的DLL將公開可以從Objective-C使用並且必須爲C#打包的函數。對於包裝考慮使用SWIG或自己做。 – Tarnschaf