我想在iOS应用程序中使用UNIX命令行程序(Berkeleys SPICE).将其编译成可用库的过程是什么?

前端之家收集整理的这篇文章主要介绍了我想在iOS应用程序中使用UNIX命令行程序(Berkeleys SPICE).将其编译成可用库的过程是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在iOS应用程序中使用 Berkeley’s SPICE工具,但是无法为iOS编译它.

这是一个命令行程序,我可以从终端呼叫:

./spice3f5 <arguments>

哪个工作很好,我想在我的iOS应用程序中的这个功能,但我不认为我可以将可执行文件复制到Xcode并从Swift中调用它.

我做了一些研究,发现如下:

>有更新版本的SPICE叫ngspice,这是比较新的(2014版)
>我相当肯定有没有使用SPICE或ngspice的应用程序,所以我确定它可以以某种方式完成.
>我已经看过一篇关于一个说ngspice has been compiled as a shared library(ctrl f“ngspice”)的人的文章,他用它制作了一个应用程序.我已经通过电子邮件发给他,但不幸的是他没有回应.

我在这里问的原因是因为在“ngspice iOS”的谷歌搜索时,我遇到了很多聪明人尝试编译静态库的this thread,这似乎超出了我的范围.我了解到动态库是允许的,直到iOS8.那么编译一个* .dylib比它是一个静态库更容易吗?

如何在iOS应用程序中使用ngspice或SPICE?

谢谢

解决方法

静态库和动态库之间的区别基本上在于他们所在的位置,静态库将存储在应用程序的二进制文件中,动态库将会运行在您的应用程序的系统(iPhone)上.就难度而言,差距没有多大.例如,如果您想要在os x上进行动态路由,则可以先在单独的项目中编译.dylib文件.然后将新的.dylib文件复制到/usr/lib或作为系统路径一部分的类似位置.那么你需要将关联的头文件复制到你的/usr/include文件夹中.在这一点上,您可以使用如下尖括号导入xcode中的头文件
#import <my_dylib_header_file.h>

然而,在静态环境中,您只需将.dylib文件拖动到xcode中,然后将相关的头文件复制到您的源文件夹中,然后使用如下引用导入:

#import "my_dylib_header_file.h"

静态执行导入的优点是,图书馆变成了最终产品,而不是动态链接,这将要求在二进制文件正常运行之前,系统上安装了dylib(认为Windows上的DLL ).静态导入的缺点是最终的二进制数较大,因为它包含更多的代码.

动态导入的优点是二进制数较小,并且可以更新dylib而不更新二进制本身.

但是,根据您的问题,我认为您的项目并不重要.你有源代码.这意味着创建一个dylib是完全不需要您的目的,您可以将源代码像静态库一样将其添加到您的xcode项目中.如果我是你,我将把香料源代码添加到我的xcode项目中,并忘记创建一个dylib.从那里我将导入文件,并从swift打电话给他们.有很多线程解释了如何调用c函数或来自swift的Objective-C类,所以我不会进入这里,而是我会引用另一个答案:Swift: How to call a C function loaded from a dylib

猜你在找的iOS相关文章