首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在c文件中编写入口点,以便可以通过命令行和/或WSTP/MathLink/Mathematica访问该文件的其他函数?

如何在c文件中编写入口点,以便可以通过命令行和/或WSTP/MathLink/Mathematica访问该文件的其他函数?
EN

Stack Overflow用户
提问于 2015-02-13 18:03:40
回答 1查看 105关注 0票数 0

我有一个52KB的c程序,有几个函数(例如,Function1,Function2,Function3等)。我从一个“主”入口点函数调用的。但每次我需要使用这些函数时,重写/重新编译程序似乎都是在浪费我的新手时间。理想情况下,我希望在Mathematica中调用这些函数,但是在花了一整天的时间试图弄清楚WSTP / MathLink之后,我似乎无法理解accomplishing such;如果不是超出大多数情况,也要考虑到到处都是令人厌烦的addtwo示例。

必须有一种简单的方法来重写这个主函数,以便可以通过命令行接口轻松地执行Function1、Function2等,如果不是由Mathematica调用的话(例如,LibraryFunctionLoad、Install、MLGetInteger()等)。我有一个主要的切入点:

代码语言:javascript
复制
int main (int argc, char *argv[])
{
    FUNCTION1(n1,n2,n3,etc.);
    FUNCTION2(n4,n5,n6,etc.);
    FUNCTION3(n7,n8,n9,etc.);   
 }

并且我知道如何更改输入(即n1、n2、n3等)。在源代码中,重新编译它,并获得我的输出。但是,我如何更改和/或包装上面的代码,以使输入可以通过命令行界面的方式输入,或者更好地通过Mathematica输入呢?关于MathLink,似乎每个函数都必须单独编译,也就是说,与通过主入口点函数访问它们相反,这是正确的吗?我在WWW上找到的关于c和命令行界面的所有东西都是幼稚的东西,比如让终端告诉你你在键盘上按了多少次"return“之类的东西。我知道我在这里问的是荒唐的基础,但如果我不是迫切需要一个答案,我不会冒着失去积分的风险。

EN

回答 1

Stack Overflow用户

发布于 2015-02-13 18:09:20

解析argc/argv,它们是命令行参数,然后您应该能够根据需要进行转换。例如,如果要转换命令行的第一个参数:

代码语言:javascript
复制
$ mycommand 10

对于int,您可以使用:

代码语言:javascript
复制
int main(int argc,char **argv) {
  int n1;
  sscanf(argv[1],"%d",&n1); // convert string to int
  FUNCTION1(n1,etc.);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28496983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档