我需要一些幫助,在XCode中包裝C++庫。在XCode中包裝C++庫
我想要實現的是在XCode中創建新庫,導入C++庫(我有.a和.h文件),將它包裝到Obj-C中,以便將該庫導入到MonoTouch。
我之所以這樣做的原因是,當我嘗試將C++ lib導入到MonoTouch中時,由於名稱重疊,我不斷收到WrongEntryPoint異常。糾正我,如果我錯了,但沒有辦法讓我找出損壞的名字,這取決於編譯器。
預先感謝您
我需要一些幫助,在XCode中包裝C++庫。在XCode中包裝C++庫
我想要實現的是在XCode中創建新庫,導入C++庫(我有.a和.h文件),將它包裝到Obj-C中,以便將該庫導入到MonoTouch。
我之所以這樣做的原因是,當我嘗試將C++ lib導入到MonoTouch中時,由於名稱重疊,我不斷收到WrongEntryPoint異常。糾正我,如果我錯了,但沒有辦法讓我找出損壞的名字,這取決於編譯器。
預先感謝您
糾正我,如果我錯了,但沒有辦法,我找到錯位的名稱,它依賴於編譯器。
技術上你可以。許多編譯器共享相同的mangling syntax,也許是來自Itanium的最有用和最持久的禮物;-)然而,當您更新C++時,它會帶來它自己的痛苦(例如非原始類型,其他編譯器)和維護問題碼。
你會更好地提供服務:
寫作的ObjectiveC包裝和使用的MonoTouch的btouch工具生成的綁定;
寫一個C包裝和使用.NET p/invoke調用您的代碼;
選擇它您本人,但如果你想一想別處再利用C++/C#代碼(例如單聲道的Android)然後使用Ç和P /調用將是可重複使用的。
我肯定會推薦在Obj-C庫中包裝庫的路徑,並使用btouch將庫導入到MonoTouch中。我最近爲一個實現了Sybase數據庫引擎的C++庫做了這個工作。如果你看看我的問題,你會發現很多關於包裝C++庫的內容,因爲我發佈了幾次關於我遇到的問題。
具體來說,你可以看看這些問題:
Linking to a C++ native library in MonoTouch
Wrapping a C++ library in Objective-C is not hiding the C++ symbols
Application with static library runs on simulator but not on actual device
Undefined symbols when linking PhoneGap static library in MonoTouch
我也建議,如果你打算去Obj-C包裝的路線,你會得到btouch輸出代碼並將其包含在你的項目中,而不是從btouch包含dll。根據我的經驗,代碼比dll更可靠,儘管dll的問題現在可能已經解決了。但採取有關btouch問題看看這個問題:
如果你在建設的OBJ-C包裝然後在這裏問他們,並張貼一些代碼,我相信我還是具體問題/問題其他社區成員將能夠幫助你。
布魯斯,正如你所假設的,我在包裝C++代碼時遇到了問題。經過數小時的閱讀和嘗試,我無法包裝C++代碼。
無論如何,我設法創建了一個簡單的Obj-C庫,由一些虛擬類組成,然後將其導入到另一個庫中。這工作得很好。然而,按照相同的模式,我將C++ .a文件與.h文件一起包括進去(我不確定是否必須使用.h,因爲我們可以在構建選項中鏈接頭文件,對嗎?),當我編譯它時,很好,構建成功,但XCode沒有生成新的.a庫。
我添加了一個鏈接器標誌:-ObjC -lNameOfLib 構建鏈接中的C++標準庫類型是否必須是靜態的?還有默認情況下隱藏的符號?
如果我們可以一步一步地寫出tut,那將是一件好事,因爲有各種各樣的指令,但是我一直無法推動它。
我困惑了一下..
謝謝你們...