Tag: swift

如何从DJI Onboard SDK转换UINT8数据

DJI Onboard SDK将数据作为一系列UINT8字节发送到移动设备。 在IOS上有一个使用C的Mobile的示例,但是找不到Swift的示例。 如何使用Swift从此数据包中提取双打和整数?

Swift with C struct pointer

我有一个包含指针的C结构,全部在C头中定义: struct testA { int iSignal; struct testB *test; }; struct testB { int iPro; }; 然后我有一个Swift程序来初始化这个结构的一个实例: var a = testA() var b = testB() a.test = &b // this line error 但是我收到以下错误: ‘&’ used with non-inout argument of type ‘UnsafeMutablePointer’ 有人可以帮忙吗?

Swift包管理器有多个目标可执行文件?

有谁知道Swift Package Manager是否支持从一个包中生成多个可执行文件? 我有一个需要迁移到Swift的C程序,它目前打包为具有多个目标的makefile。 我对可能映射到Swift包的方式有点挣扎,还是“包”?

从C调用Swift

我已经看过许多文章解释如何从Swift调用C函数 ,但我想探索converse(如果可能的话), 从C调用Swift函数 。 我已经看到了在objC中演示Swift函数的例子,但这些并没有让我更接近我的目标。 这项任务是否得到支持?

在Swift中使用C函数,将函数作为参数

我正在写一个C数学库的包装器。 每个函数都将一个或两个函数作为参数。 但是,这些子函数(以及父函数)的参数不是Swifty -hence包装器。 我已经清理了示例代码,只显示了三个主要部分:c-library函数,将传递给包装器的所需Swift函数(未显示主体,但环绕c-library函数),以及必需的C函数forms。 //C library function, that calls the passed function dozens, hundreds or thousands of times, each time it changes the data provided in p, and uses the output from x //The Swift arrays are passed as pointers, and the length of the and x array are m and n respectively returnValue […]

无法将’UnsafePointer ‘类型的值转换为预期的参数类型’UnsafePointer ‘

我在Swift for OS X中使用外部C库。我得到一个值cda,它在C中定义为double* (它是指向double数组的指针)。 导入Swift时,它将类型识别为UnsafeMutablePointer。 我正在尝试将此指针和计数转换为双数组。 这是我正在使用的代码(假设arrlen是数组的正确计数): let doublearrptr = UnsafePointer(cda) let xptarr = UnsafeBufferPointer(start: doublearrptr, count:arrlen) 但是,在编译此代码片段时,我收到错误: Cannot convert value of type ‘UnsafePointer’ to expected argument type ‘UnsafePointer’ 我对Swift比较UnsafePointer ,但我很确定我无法转换为UnsafePointer 。 我尝试转换为UnsafePointer ,但是出现了同样的错误。 Swift确实认识到cda是一个UnsafeMutablePointer 。

从C调用Swift的最佳方法是什么?

从Swift调用C非常简单,但是我正在研究在C中制作双向包装器,所以我的C必须调用Swift函数。 现在,我可以通过在C中声明函数指针来实现这一点,并且在Swift端将它们设置为在Swift中调用代码之后让我的C函数调用它们。 我的C头文件: typedef void (*callback_t)(void); void callBackIntoSwift( callback_t cb ); 我的C实现文件: #include “stuff.h” #include void callBackIntoSwift( callback_t cb ) { printf( “Will call back into Swift\n” ); cb(); printf( “Did call back into Swift\n” ); } 在桥接头中包含我的C头文件后,我可以在Swift端执行以下操作: let cb: callback_t = { someKindOfSwiftFunction() } callBackIntoSwift( cb ) 甚至: callBackIntoSwift { someKindOfSwiftFunction() } 有没有更好的方法来做到这一点,不需要函数指针和回调? 我想让C端直接调用someKindOfSwiftFunction […]

从Swift调用variadic Objective-C函数

我已经总结了问题的步骤,我在Objective-C中定义了一个C函数: ObjC.h #import void cuslog(NSString *format, …); @interface ObjC : NSObject @end ObjC.m #import “ObjC.h” @implementation ObjC @end void cuslog(NSString *format, …) { // Implementation } 我在Bridging-Header.h中公开了它: #import “ObjC.h” // Also tried to put this line in bridging header void cuslog(NSString *format, …); 在Swift中,我打算像这样调用函数: cuslog(“Some log”) 但错误说: “Use of unresolved identifier ‘cuslog'” 在Swift中调用函数的正确方法是什么?

如何在框架中使用Swift文件中的C dylib

我正在寻找开始在框架中使用Swift,它使用libz.dylib ,但看起来没有办法从Swift中导入它。 我尝试import zlib并import libz ,但这不起作用。 ZLib已经与目标相关联。 似乎让我的Swift代码看到zlib类的唯一方法是在桥接头中导入必要的头文件,但是框架目标不能有桥接头,那么有没有办法使用dylib?

是否可以将Swift类转换为C void *指针?

是否可以将Swift类转换为C void *指针? // swift class class MyClass { } var myClass = MyClass() var p: UnsafeMutablePointer = myClass //<- failed //c function void someSwiftClass(void *context); 谢谢