V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
liuidetmks
V2EX  ›  程序员

求教, Swift 引入 .a 库, 类型缺失?

  •  
  •   liuidetmks · 2022-03-09 10:44:31 +08:00 · 1121 次点击
    这是一个创建于 800 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近想试试 swift ,干写没什么意思,想把以前写的小工具重写一下。
    这不,遇到问题了,请各位巨佬稍微喵一眼,稍微点拨下,我就受用无穷了。

    项目结构,如图: img

    有主要有 3 个文件, 这里出问题的是 ecc.swift
    这里原 oc 项目会调用一个 libsecp256k1 。a 的静态库,
    搜索了下,说是 swift 必须把。a 封装成 。framework ,

    好的,于是,我在工程下面添加一个 target , 编译成 framework
    然后在 ecc.swift 中 import secp256k1 ,import 也没报错 ,但是也不能双击进入详情,
    bridging header 也对应的设置了

    但是使用头文件里面的类型时候,报错,Cannot find type 'secp256k1_context' in scope

    DCELL
        1
    DCELL  
       2022-03-09 11:19:25 +08:00   ❤️ 1
    1. 这个 framework 编译出来就有问题 建议查看下产物对不对
    2. 可能是 secp256k1_context 这个头文件,没有暴露出来,在 secp256k1.h 文件中 import 下
    xtinput
        2
    xtinput  
       2022-03-09 15:41:39 +08:00
    你没把.a 文件相关的头文件弄进去呀
    xtinput
        3
    xtinput  
       2022-03-09 15:44:52 +08:00
    看看你的 framework 结构呗
    xtinput
        4
    xtinput  
       2022-03-09 15:50:09 +08:00
    我把极光的推送封装成 framework 之后的结构,是利用 cocoapods 来封装的
    <img src="http://img.tcoding.cn/2022/03/09/a7fb316ab492e.png" alt="a7fb316ab492e"/>
    xtinput
        6
    xtinput  
       2022-03-09 20:58:38 +08:00
    https://github.com/darvintang/WeChatOpenSDK 参考这个

    .a 文件替换 WeChatOpenSDK ,名字也改成和 framework 同名的
    重点在 Modules 的 module.modulemap 文件里面,将 module.modulemap 也编辑好
    头文件放到 Headers 里面
    然后再把弄好的 framework 拖到项目去
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2843 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 12:18 · PVG 20:18 · LAX 05:18 · JFK 08:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.