0

プロジェクト(Kitura https://github.com/IBM-Swift/Kitura )でCCurl(https://github.com/IBM-Swift/CCurl.git )を使用してから、func curlHelperSetOptStringを呼び出し、「swift build」をコンパイルしますエラーが発生します:

/Users/xxxx/Documents/server/ServerSwift/.build/debug/ServerSwift.build/UploadService.swift.o /Users/xxxx/Documents/server/ServerSwift/.build/debug/KituraNet.build/でシンボル_curlHelperSetOptStringを複製しますClientRequest.swift.o ld: アーキテクチャ x86_64 の 1 つの重複シンボル :0: エラー: リンク コマンドが終了コード 1 で失敗しました (呼び出しを確認するには -v を使用します) :0: エラー: ビルドに 1 つのコマンド エラーがありました

コード:

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)
}

助けてください

4

5 に答える 5

1

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

于 2016-10-02T09:05:41.440 に答える
0

Build Phases/Compile Sources の下に複数のエントリがないことを確認します。はいの場合は、それらを削除します。

また、プロジェクトのクリーニングを試すか、もう一度実行することもできますswift package generate-xcodeproj

于 2016-09-30T17:54:23.520 に答える
0

に既に含まれている場合は、おそらくCCurl直接に含まれています。Package.swiftKitura-Net/Package.swift

ほとんどの Swift モジュールでは、これは問題になりませんが、主に可変個引数関数が含まれており、Swift は C ライブラリから可変個引数関数をインポートしないためCCurlハックが必要です。このハックは、C ヘッダー ファイルに静的関数を作成して、関数の非可変個バージョンを作成します。ここで複製されているのはこれらの静的関数です (そして、各モジュールは個別にコンパイルされているため、互いに見えないため、それらを回避することはできません)。libCurllibCurl#ifndef

Package.swift ファイルから依存関係を削除してみてくださいCCurl。それが含まれているという事実だけに依存してください。うまくいけば大丈夫です。

于 2016-09-30T18:40:26.507 に答える