2016-09-30 13 views
0

はその後、私は "迅速なビルド" をコンパイルし、エラーを取得し、FUNCのcurlHelperSetOptStringを呼び出す:エラー - 私は私のプロジェクト(Kitura <a href="https://github.com/IBM-Swift/Kitura" rel="nofollow">https://github.com/IBM-Swift/Kitura</a>)にCCurl(<a href="https://github.com/IBM-Swift/CCurl.git" rel="nofollow">https://github.com/IBM-Swift/CCurl.git</a>)を使用して迅速-Kitura

duplicate symbol _curlHelperSetOptString in: /Users/xxxx/Documents/server/ServerSwift/.build/debug/ServerSwift.build/UploadService.swift.o /Users/xxxx/Documents/server/ServerSwift/.build/debug/KituraNet.build/ClientRequest.swift.o ld: 1 duplicate symbol for architecture x86_64 :0: error: link command failed with exit code 1 (use -v to see invocation) :0: error: build had 1 command failures

コード:

import CCurl 
var handle=curl_easy_init() 
if (handle != nil) { 
     let url = "http: //example.com/" 
     let buffer=url.cString(using: .utf8) 
     curlHelperSetOptString(handle, CURLOPT_URL, buffer) 
} 

ヘルプ私、プラザあなたはビルドフェーズ/ソースをコンパイルの下に複数のエントリを持っていない

答えて

0

すでにKitura-Net/Package.swiftに含まれている場合は、Package.swiftに直接CCurlが含まれている可能性があります。

最もスウィフトモジュールで、これは問題ではないだろうが、CCurllibCurlはほとんどvariadic functionsSwift doesn't import variadic functions from C libraries含まれているためはそれでをハック持っている必要があります。 ハックは、Cヘッダファイルに静的関数を作成して、libCurl関数の可変でないバージョンを作成します。ここに複製されている静的関数です(各モジュールは別々にコンパイルされているため、お互いに見えないので、それらのまわりで#ifndefはできません)。

Package.swiftファイルからCCurlの依存関係を削除してみてください。あなたのパッケージに含まれているということだけに依存していて、うまくいけばうまくいくでしょう。

0

チェック。はいの場合は削除します。

また、プロジェクトをクリーニングしたり、swift package generate-xcodeprojを再度実行したりすることもできます。

0

すでにkitura-netパッケージにインポートされているccurlをインポートしているからです。

1

実際は、静的インラインではなく、externインラインとしてCCurlヘルパ関数を定義している可能性があります。どうやらextern inlineは、定義された関数への参照の1つを外部名にしてしまい、複数回インポートすると問題を引き起こす可能性があります。

これを検討します。

1

IBM-Swift/CCurl.git 0.2.2にタグが付けられています。ここに記載されている問題の修正が含まれています。

関連する問題