首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Xcode11包管理器中处理C文件?

如何在Xcode11包管理器中处理C文件?
EN

Stack Overflow用户
提问于 2019-09-29 05:22:32
回答 1查看 45关注 0票数 0

我有一个C函数,我在Swift包装器函数中调用它。现在,我想用这个Swift包装器函数创建一个Swift-package。然而,我做错了一些事情。

这是C-函数,它增加了2个双精度值。

代码语言:javascript
复制
//  addDoubles.c
#include <math.h>
#include "addDoubles.h"

double addDoubleWithC(double val1, double val2) {
    return val1 + val2;
}

以下是带有包装函数的Swift文件:

代码语言:javascript
复制
//  WrappedCFunctions.swift
import Foundation
public struct WrappedCFunctions {    
public static func addDoubles(val1:Double, val2:Double) -> Double{
    let resulFromCFunction = addDoubleWithC(val1, val2)
return resulFromCFunction
}
}

在viewController中,我使用了这个函数:

代码语言:javascript
复制
import UIKit

class ViewController: UIViewController {
@IBOutlet weak var textLabel: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()
    let val1 = 1.11
    let val2 = 2.22
    let result = WrappedCFunctions.addDoubles(val1: val1, val2: val2) 
    let txt = String(val1) + " + " + String(val2) + " = " + String(result)
    textLabel.text = txt
}
}

项目结构如下:

这个应用程序运行正常,正如预期的那样。

在下一步中,我使用File-> New-> Swift Packe创建了一个名为Math的包。然后,我将文件WrappedCFunctions.swift从AddDoubles文件夹移动到包的CMath/Source/CMath文件夹中。在下一步中,我将包包含到项目中。这将导致以下结构:

最后但并非最不重要的一点是,我在ViewController.swift中添加了一条Import CMath语句并构建了项目。

但是,该包不被识别。

如何解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-02 05:59:13

如果看不到你的Package.swift文件,就不可能知道你的包是否安装正确。看着你发布的图片,我最好的猜测是它没有正确配置。

我猜测的原因是,当您需要2个目标时,您的Sources/中只有1个目录(通常在SwiftPM中,每个目标有1个目录,而我在包中看不到任何.c文件)。C代码需要成为Swift目标所依赖的目标。然后你就有了一个依赖于Swift目标的产品。该产品就是您将在Xcode中链接和导入的产品。

如果您查看我的this代码库,我使用C和Swift,所以您可以看到我是如何设置Package.swift来构建2个目标的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58150407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档