mathematica可以直接调用C语言的代码么?

 我来答
育知同创教育
2016-03-11 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
可以调用C语言的方法,如下
1.用C语言写好函数,如
double f(double x,double y){
return x*y;
}
2.找到路径,比如C:\Program Files\Wolfram Research\Mathematica\6.0
\SystemFiles\Links\MathLink\DeveloperKit\Windows\MathLinkExamples\addtwo或相应安装目录下的addtwo.c以及
addtwo.tm两个文件拷贝到某个自己的文件夹中。
3.将addtwo.c以及addtwo.tm依照用C语言写好的函数进行修改存为f.c以及f.tm,其中本例需要修改之处
(1)addtwo.c中"extern int addtwo( int i, int j);"及以下函数addtwo代码部分替换为函数f相应的代码。
(2)addtwo.tm中Function、Pattern、Arguments、ArgumentTypes、ReturnType均需要按照f的定义进行修改,其中
addtwo两个变量均是int返回值也是int而f的变量和返回值均为double,故应当将其中Integer相应改为Real
(3)如果需要用户能在Mathematica中通过?+函数名来查询函数功能,则需修改:Evaluate:项中相应的内容
特别注意(至少)若安装有Visual Studio 6则不可按文档
Tutorial/SettingUpExternalFunctionsToBeCalledFromMathematica中所述的方法自行编写f.c,那样会导致LINK时提
示WinMain函数无定义
4.安装负责将MathLink template文件生成C代码的mprep.exe,做法如下
(1)进入C:\Program Files\Wolfram Research\Mathematica\6.0
\SystemFiles\Links\MathLink\DeveloperKit\Windows\CompilerAdditions\MLDev32或非默认安装位置的相应文件夹
(2)按下Ctrl键,选中并拖拽Lib,Include,Bin三个文件夹进入路径C:\Program Files\Microsoft Visual Studio\VC98
(Visual Studio 6)或C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK(Visual Studio 2005)或任何非
默认安装路径相应文件夹下
(3)出现提示对话框时选择"是"或"全部"
此操作会将Mathematica的三个文件夹中的文件复制到VC同名文件夹下
4.完成后进入命令行并进入存储f.c以及f.tm的文件夹,输入如下语句
SET CL=/nologo /c /DWIN32 /D_WINDOWS /W3 /O2 /DNDEBUG
SET LINK=/NOLOGO /SUBSYSTEM:windows /INCREMENTAL:no /PDB:NONE kernel32.lib user32.lib gdi32.lib
MPREP f.tm -o ftm.c
CL f.c ftm.c
LINK f.obj ftm.obj ml32i3m.lib /OUT:f.exe
此操作最终将会编译出可被Mathematica调用的MathLink程序f.exe
其中前两句将(创建及)改变环境变量CL,LINK的值,其选项的意义详见Mathematica文档
tutorial/MathLinkDeveloperGuide-Windows
mprep句执行后应生成ftm.c,-o意为输出成文件,CL句执行后将生成f.obj以及ftm.obj,LINK句将生成f.exe,其中
ml32i3m.lib为MathLink所需的库文件,应当位于编译器所能找到的路径中
5.在Mathematica中安装并调用程序。可用如下语句调入程序
link=Install["[路径]\\f"]
其中[路径]应用f.exe所在路径代替。卸载程序时只需用语句
Uninstall[link]
即可
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式