2011-03-09 87 views
1

我讀了關於本機庫鏈接到MonoTouch的,特別是這個文檔:鏈接到C++本地庫中的MonoTouch

http://monotouch.net/Documentation/Linking_Native_Libraries

這描述鏈接到C庫。是否也可以鏈接到MonoTouch的C++庫?我對MonoTouch非常陌生,特別是對於導入庫,所以如果這確實是可行的,我將不勝感激任何關於我可能面臨的嘗試導入C++庫的問題的建議。將C++庫封裝在Objective-C庫中,然後使用btouch導入這是一條很好的路線?還是有更簡單的方法?考慮到我對C++(和Objective-C的相關知識)的知識可以最好地描述爲「危險的」。 ;)

我問的原因是我需要使用Sybase的C++ API來訪問他們的Ultralite數據庫。我設法通過Objective-C獲得了一個示例應用程序,該應用程序訪問在Xcode中工作的Ultralite C++ API。但是現在我試圖將這個示例移植到MonoTouch中。示例應用程序可以在這裏找到:

https://github.com/BruceHill/Ultralite-Names-Sample-ObjC

爲xcode中Sybase文檔提到下面,參照在Xcode使用API​​:

本教程使用UltraLite C++ API。爲了消除轉換爲C類型的需要,將源代碼編譯爲C++。以C++編譯項目:

  1. 在搜索編譯器設置框中,輸入編譯源代碼。
  2. 選擇在值字段

什麼是在MonoTouch的這個API這種工作的意義的Objective-C++從選項?

+0

你碰巧得到了更進一步的呢?我已經使用SWIG構建了C樁和C#對象包裝器,並且只是試圖讓MonoTouch與此時的鏈接工作,但如果您已經解決了所有這些問題,我不會介意看看。 – Kenny 2013-12-17 15:18:56

+0

嗨肯尼。是的,很久以前我確實得到了這項工作。我會考慮將源代碼放到github上,這樣你就可以看看了。 – BruceHill 2013-12-18 04:51:47

+0

@BruceHill - 你有沒有更新GitHub上的解決方案?我的朋友正在研究這個確切的事情,並說這不是從問題的鏈接... – 2014-11-20 21:22:26

回答

0

您當然可以使用C++ API,但您需要將其封裝在C api或ObjC + btouch API中以便與此交談。調用C api的用法PInvoke和C++庫使用符號變形。雖然理論上你可以拼湊到損壞的符號,但這不是一個好主意,因爲編譯是特定於編譯器的。

+0

謝謝,傑夫。我有一種感覺,我必須包裝C++ API來使用它;我只是希望有一個更簡單的方法,因爲它是一個相當大的api來包裝。那麼,猜猜我知道我這週末會做些什麼!呵呵我想我會用ObjC + btouch包裝它,因爲我已經設法在ObjC中構建一個簡單的_hello world_庫,然後用btouch綁定這些類型。我必須說,我很高興看到btouch的使用方式。 :)它在我的第一次嘗試!喔! :) 再次感謝你的幫助。 – BruceHill 2011-03-09 18:32:53