如何在iOS项目中构建和使用C库?
我是iOS编程新手。我有一个使用c库的Android应用程序。我想创建相同的iOS应用程序并使用相同的库。我对此进行了搜索,但大多数结果都是针对objective-c编程的,并且有各种方法我无法选择。我相信有了新功能,我可以用swift做得更简单。 所以我的问题是我应该如何创建C库并在iOS项目中使用它?我能用cmake吗?我应该像下面第一个链接中所说的那样使用Swift软件包管理器吗 我在互联网上找到的最佳结果:如何在iOS项目中构建和使用C库?,ios,c,Ios,C,我是iOS编程新手。我有一个使用c库的Android应用程序。我想创建相同的iOS应用程序并使用相同的库。我对此进行了搜索,但大多数结果都是针对objective-c编程的,并且有各种方法我无法选择。我相信有了新功能,我可以用swift做得更简单。 所以我的问题是我应该如何创建C库并在iOS项目中使用它?我能用cmake吗?我应该像下面第一个链接中所说的那样使用Swift软件包管理器吗 我在互联网上找到的最佳结果: Xcode可以编译C代码而无需额外设置。只需将您的C文件添加到项目中并选择适
Xcode可以编译C代码而无需额外设置。只需将您的C文件添加到项目中并选择适当的目标 要在Swift上使用C代码,您应该创建桥接头 下面是一个如何从头开始在同一个项目中使用C和Swift的示例。您可以对现有的C代码执行同样的操作
// example.h
#include <stdio.h>
int exampleMax(int num1, int num2);
// example.c
#include "example.h"
int exampleMax(int num1, int num2)
{
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let number1 = Int32(1)
let number2 = Int32(5)
let result = exampleMax(number1, number2)
print("min = \(result)")
}
}
您可以使用modulemap文件代替桥接头。它更灵活、更方便,但设置起来有点困难。我不想在c代码发生更改时复制所有文件,所以我更喜欢使用库。使用库不是更好的方法吗?
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let number1 = Int32(1)
let number2 = Int32(5)
let result = exampleMax(number1, number2)
print("min = \(result)")
}
}