这是一个命令行程序,我可以从终端呼叫:
./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?
谢谢
解决方法
#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