2015-10-26 40 views
0

我已經用Xamarin創建了一個簡單的綁定項目。綁定項目導入一個靜態庫MyLibrary.a。它還包含通過sharpie工具製作的ApiDefinition.csStructAndEnum.cs將stdlibs與Xamarin鏈接

現在我有一個iOS項目鏈接該綁定項目。 MyLibrary.a爲了工作需要一些框架和libs(見下文)。

enter image description here

爲了使它的工作,我也跟着Xamarin documentation

在iOS項目中,我添加了以下mtouch arguments(另請參見附圖)。

--cxx -gcc_flags "-L${ProjectDir} -framework CFNetwork -framework SystemConfiguration -framework MobileCoreServices -framework Security -framework AVFoundation -libicucore -libxml2 -libc++ -libzd -libstdc++.6.0.9"

enter image description here

當我嘗試編譯我總是生成錯誤結束。

MTOUCH: error MT5209: Native linking error: library not found for -libicucore MTOUCH: error MT5201: Native linking failed. Please review the build log and the user flags provided to gcc: -L/Users/tmp/Documents/Projects/Ovp/BindinTest.iOS -framework CFNetwork -framework SystemConfiguration -framework MobileCoreServices -framework Security -framework AVFoundation -libicucore -libxml2 -libc++ -libzd -libstdc++.6.0.9 MTOUCH: error MT5202: Native linking failed. Please review the build log.

任何線索,使其工作?可能缺少了什麼?

非常感謝您。

回答

1

-libicucore -libxml2 -libc++ -libzd -libstdc++.6.0.9

這不是你如何爲gcc鏈接傳遞庫選項。

要鏈接駐留在/path/to/the/lib靜態或動態庫libicucore.<extension> ,命令行選項有:

-L/path/to/the/lib -licucore 

注意,庫名稱的lib前綴 被省略了-l選項:鏈接器假定它。如果/path/to/the/lib是鏈接庫的 庫中的默認搜索目錄之一,則可以忽略它。如果您有 再查看您的Xamarin文檔,您將看到libMyLibrary.a 與選項-lMyLibrary鏈接。

關於這些連接選項的其他一些事情對我的GCC眼睛來說似乎很奇怪,但由於我對iOS開發幾乎一無所知,所以我不會預期 您還沒有的問題。

+0

邁克,是的,這是我的'-libicucore'不正確。 icucore是一個stdlib,那麼,我需要將它指定爲'-L/path/to/the/lib -licucore'嗎?謝謝。 –

+0

這不是一個標準的海灣合作委員會圖書館,但我相信它的iOS的「標準」,所以 我不能說它是否會被默認發現,但你的海灣合作委員會工具鏈是 適用於iOS。不要嘗試'-L ',看看。如果找不到庫 ,那麼您需要找到它所在的位置,並在其中添加一個「-L」。 –

+0

感謝您的回覆。你能給我一個關於GCC和gcc_flags的介紹嗎? –