2014-06-19 24 views
8

我嘗試使用這種新語言來啓動一個新項目,使用我的舊代碼 我在我的舊項目中使用了Libxml2.2,因此xcode在放置後會顯示「libxml.h/parse.h文件未找到」我的新項目中的代碼。 我已經導入了「libxml2.2.dylib」如何在Swift中使用libxml?

+0

這是很好看的https://spin.atomicobject.com/2015/02/23/c-libraries-swift/ – onmyway133

回答

5

爲了在Xcode 6中使用我的項目工作,我導航到我的項目的「Build Settings」,並選擇了我的目標。然後我在生成設置搜索「標題搜索路徑」,並添加以下行來調試版本和發佈:

$(SDKROOT)/usr/include/libxml2 
+0

這不起作用,因爲編譯器會說你可以不包括非模塊化的包含 – Loegic

2

我發現,你可以離開了進口「libxml2.2.dylib」如果添加'-lxml2'到OTHER_LDFLAGS。

2

你將不得不創建一個包含libxml/tree.h像這樣的標題自定義module map文件:

module libxml [system] { 
    header "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/libxml2/libxml/tree.h" 
    export * 
} 

然後你把這個文件(module.modulemap)爲示例 - 文件夾 - 模內並將其添加到您的項目和目標的build settings

您現在可以在代碼中使用@import libxml;

6

我使它與CommonCrypto https://github.com/onmyway133/CommonCrypto.swift一起工作,但libxml應該是相同的。要記住的東西

模塊。modulemap

閱讀http://clang.llvm.org/docs/Modules.html#module-map-language

創建一個名爲libxml2文件夾(在我的情況下,在同一個目錄中我的項目文件),然後創建一個module.modulemap文件中

module libxml2 { 
    header "/usr/include/libxml2/libxml/tree.h" 
    export * 
} 

這裏我想補充只需tree.h,但您可以根據需要添加更多

SWIFT_INCLUDE_PATHS

轉到目標生成設置,添加到這個Import Paths

${SRCROOT}/libxml2 

HEADER_SEARCH_PATHS

Why am I getting this "libxml/tree.h file not found" error?

轉到目標構建設置,加入到這個Header Search Paths

$(SDKROOT)/usr/include/libxml2 

有趣相關的職位