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

使用curlcpp调用OpenWeatherMap API时出现arm64未定义符号错误

解决「undefined symbols for architecture arm64」链接错误(curlcpp + OpenWeatherMap)

问题原因

是,这个错误完全是库链接不完整导致的:

  • 错误中的_curl_easy_setopt、_curl_easy_strerror是底层libcurl库的符号,curlcpp作为libcurl的C++封装库,必须依赖libcurl才能运行,你的CMake配置只链接了curlcpp,没链接libcurl。
  • 头文件路径配置错误,虽然这不是直接引发链接错误的原因,但会埋下编译隐患。

解决方案

1. 修正CMake配置

替换原CMakeLists.txt为以下内容,关键调整点:

  • 修正头文件包含路径,指向curlcpp的根include目录
  • 使用target_link_libraries(更规范的目标级链接方式)同时链接curlcpp和libcurl
cmake_minimum_required(VERSION 3.24)
project(TerminalWeather)

set(CMAKE_CXX_STANDARD 23)

# 正确包含curlcpp的头文件根目录
include_directories(/opt/homebrew/Cellar/curlcpp/2.1/include)

# 创建可执行文件目标
add_executable(TerminalWeather src/main.cpp)

# 链接curlcpp及其依赖的libcurl库
target_link_libraries(TerminalWeather
    /opt/homebrew/lib/libcurlcpp.dylib
    /opt/homebrew/lib/libcurl.dylib
)

如果想更优雅地使用CMake的包查找功能(推荐),可以改用find_package(前提是brew安装的curl和curlcpp提供了CMake配置文件):

cmake_minimum_required(VERSION 3.24)
project(TerminalWeather)

set(CMAKE_CXX_STANDARD 23)

# 查找并链接libcurl
find_package(CURL REQUIRED)
include_directories(${CURL_INCLUDE_DIR})

# 查找并链接curlcpp
find_package(curlcpp REQUIRED)
include_directories(${curlcpp_INCLUDE_DIR})

add_executable(TerminalWeather src/main.cpp)

target_link_libraries(TerminalWeather
    ${curlcpp_LIBRARY}
    ${CURL_LIBRARIES}
)

2. 验证库架构(可选)

M1 Mac是arm64架构,确保安装的curlcpp和libcurl都是arm64版本:

# 检查curlcpp架构
lipo -info /opt/homebrew/lib/libcurlcpp.dylib
# 检查libcurl架构
lipo -info /opt/homebrew/lib/libcurl.dylib

输出应包含arm64,如果显示x86_64,需用brew重新安装适配arm64的版本:

brew reinstall curl curlcpp

3. 修正代码中的URL占位符

将主代码中的{myCity}替换为实际城市名(如Shanghai),{myAPIKey}替换为你在OpenWeatherMap申请的API密钥,否则请求会返回权限错误。

错误细节解释

  • __ZN4curl14curl_exceptionC2...:curlcpp自身的异常类构造函数符号缺失,可能是因为头文件路径错误导致编译器没有正确识别curlcpp的类定义,或者链接时没有正确包含curlcpp库的所有符号。
  • _curl_easy_setopt:libcurl核心函数符号缺失,直接原因是没有链接libcurl库。

内容的提问来源于stack exchange,提问作者I.C.Wiener

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 00:15:36