【问题标题】:Undefined symbols for architecture i386: libcurl架构 i386 的未定义符号:libcurl
【发布时间】:2023-03-11 10:15:01
【问题描述】:

在集成 libcurl 时,遇到以下问题。
架构 i386 的未定义符号:

 "_SSLClose", referenced from:
  _Curl_darwinssl_close in libcurl.a(libcurl_la-curl_darwinssl.o)
"_SSLCopyPeerTrust", referenced from:
  _darwinssl_connect_common in libcurl.a(libcurl_la-curl_darwinssl.o)
"_SSLCreateContext", referenced from:
  _darwinssl_connect_common in libcurl.a(libcurl_la-curl_darwinssl.o)
  _darwinssl_connect_common in libcurl.a(libcurl_la-curl_darwinssl.o)
  _Curl_darwinssl_close in libcurl.a(libcurl_la-curl_darwinssl.o)
"_SSLGetBufferedReadSize", referenced from:

【问题讨论】:

    标签: ios xcode cocos2d-x i386 ios-frameworks


    【解决方案1】:

    您添加的静态库libcurl.a 用于设备。您正在尝试为模拟器构建应用程序(i386 适用于 Mac)。更改您的 libcurl.a 或为 Device 构建应用程序将解决您的问题。

    【讨论】:

      【解决方案2】:

      我曾经在另一个库中运行过这样的问题。问题是模拟器在 x86 处理器上运行,而实际设备在 ARM 上,您实际上需要在项目中构建两个单独的库。一个用于模拟器,一个用于 ARM。如果您的目标是 ARM-64,您也需要构建它。

      【讨论】:

        【解决方案3】:

        在你的运行脚本中替换它...希望这会解决

        定义输出文件夹环境变量

        UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal
        

        步骤 1. 构建设备和模拟器版本

        xcodebuild -target GEOAuthAuthentication ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}"
        
        xcodebuild -target GEOAuthAuthentication -configuration ${CONFIGURATION} -sdk iphonesimulator -arch i386 BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}"
        
        xcodebuild -target GEOAuthAuthentication -configuration ${CONFIGURATION} -sdk iphonesimulator -arch x86_64 BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" TARGET_BUILD_DIR="./build-x86_64"
        

        确保输出目录存在

        mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"
        

        步骤 2. 使用 lipo 创建通用二进制文件

        lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/lib${PROJECT_NAME}.a" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/lib${PROJECT_NAME}.a" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/lib${PROJECT_NAME}.a" "./build-x86_64/lib${PROJECT_NAME}.a"
        

        最后一击。复制头文件。只是为了方便

        cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/include" "${UNIVERSAL_OUTPUTFOLDER}/"
        

        【讨论】:

          【解决方案4】:

          检查您的目标->构建阶段-> 将二进制文件与实验室链接是添加所有必需的框架和库

          【讨论】:

            猜你喜欢
            • 2011-08-14
            • 2011-10-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-02-12
            相关资源
            最近更新 更多