You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为libcurl库编写Swift封装时遇头文件缺失等问题求助

Swift封装libcurl时出现'curl/curl.h' file not found错误

我按照一份为libcurl创建Swift封装的教程操作,但在libcurl.h中执行#include <curl/curl.h>时,出现错误:'curl/curl.h' file not found。我已经通过brew在Mac上安装了curl。

我的项目结构如下:

swift_libcurl_email/
├─ Package.swift
├─ Sources/
│  ├─ libcurl/
│  │  ├─ libcurl.h
│  │  ├─ module.modulemap
│  ├─ swift_libcurl_email/
│  │  ├─ swift_libcurl_email.swift
├─ Tests/
│  ├─ swift_libcurl_emailTests/
│  │  ├─ swift_libcurl_emailTests.swift

Package.swift 配置

import PackageDescription

let package = Package(
    name: "swift_libcurl_email",
    products: [
        .library(
            name: "swift_libcurl_email",
            targets: ["swift_libcurl_email"]),
    ],
    targets: [
        .systemLibrary(
            name: "libcurl",
            providers: [
                .brew(["curl"]),
                .apt(["libcurl4-openssl-dev"])
            ]
        ),
        .target(
            name: "swift_libcurl_email", dependencies: [.target(name: "libcurl")]),
        .testTarget(
            name: "swift_libcurl_emailTests",
            dependencies: ["swift_libcurl_email", .target(name: "libcurl")]),
    ]
)

module.modulemap 配置

module libcurl [system] {
    header "libcurl.h"
    link "curl"
    export *
}

libcurl.h 内容

#ifndef libcurl_h
#define libcurl_h

#include <stdbool.h>
#include <curl/curl.h>

typedef size_t (*curl_func)(void * ptr, size_t size, size_t num, void * ud);

CURLcode curl_easy_setopt_string(CURL *curl, CURLoption option, const char *param) {
    return curl_easy_setopt(curl, option, param);
}

CURLcode curl_easy_setopt_func(CURL *handle, CURLoption option, curl_func param) {
    return curl_easy_setopt(handle, option, param);
}

CURLcode curl_easy_setopt_pointer(CURL *handle, CURLoption option, void* param) {
    return curl_easy_setopt(handle, option, param);
}

#endif /* libcurl_h */

我发现一个实现同类功能的仓库,它能在我的机器上正常编译,但将其Package.swift复制到我的项目中时,出现错误:configuration of package 'swift_libcurl_email' is invalid; the 'providers' property can only be used with a System Module Package。

我希望不依赖第三方仓库,自行实现libcurl的Swift封装,并提供简化IMAP和SMTP操作的封装函数,恳请各位提供帮助,谢谢!


内容的提问来源于stack exchange,提问作者Horst Mueller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 04:17:56