我目前正在使用Swift中的一个库,该库已经用C语言编写。由于C中的版本已经有一个大型测试套件,我想通过C测试运行Swift代码。
是否可以在C中调用Swift?
答案 0 :(得分:1)
要从C调用Swift,可以在可从C调用的Objective-C函数中包装Swift代码。下面是一个简单的人为例子。
Swift代码:
import Foundation
@objc public class ClassSwift : NSObject {
public func addIntegers(int1:Int32, int2:Int32) -> Int32 {
return int1 + int2;
}
}
Objective-C包装器:
// Mixed 1a is the name of my sample target
// You can see the name of your Swift header in
// Objective-C Generated Interface Header Name under Build Settings.
#import "Mixed_1a-Swift.h"
// This function is callable from C, even though it calls Swift code!
int addIntsC(int i1, int i2)
{
ClassSwift * cs = [[ClassSwift alloc] init];
return [cs addIntegersWithInt1:i1 int2:i2];
}
最后,这是C代码:
#include <stdio.h>
int addIntsC(int, int);
int main(int argc, const char * argv[]) {
int result = addIntsC(3, 7);
if (result == 10) puts("Test passed!");
else puts("Failed... :(");
return 0;
}