我有一个用Rust制作的小项目,它使用rust-sdl2来管理窗口,图形等......它非常简单,因为它只显示一个窗口并清除它。
它在macOS上工作正常,我也试图让它在iOS上运行。我设法使用cargo build --no-default-features --target x86_64-apple-ios --lib
为模拟器编译库,我可以看到生成的dylib和.a。
我在Xcode中创建了一个新的iOS项目,并将该库添加到项目中。我还确保使用#[no_mangle]
标记要呼叫的功能,并添加了extern "C"
前缀。
我在主视图控制器中做了类似的事情(我知道它是错误的地方,因为我应该实际替换main.m文件并让SDL2管理整个应用程序生命周期,但我会到达那里后):
extern void run_loop();
- (void)viewDidLoad {
[super viewDidLoad];
run_loop();
}
我还将生成的库的路径添加到项目的库搜索路径中。
当我编译它时一切都很好,但链接器抱怨它无法找到SDL2库。这是有道理的,因为我不包括这些库的iOS版本。关键是,有没有办法让Rust在我自己的库中添加SDL2 iOS库,这样我就不需要携带更多的依赖项了,还是应该手动编译iOS版SDL2并将它们添加到项目中? / p>