我有一个用于MATLAB的 Mathematica 符号工具箱 - 版本2.0 here
然后我使用它在MATLAB环境中编译的文档
- 1)转到 Mathematica 目录,找到文件
mathlink.h
in E:\数学\数学\ 5 \附加元件\ MathLink的\ DeveloperKit \的Windows \ CompilerAdditions \ mldev32 \包括” 还有文件ml32i1m.lib
E:\数学\数学\ 5 \附加元件\ MathLink的\ DeveloperKit \的Windows \ CompilerAdditions \ mldev32 \ lib中。将两个文件复制到预定目录(我们将此目录称为C:\ xxx)。- 2)将压缩文件math.tar的内容复制到C:\ xxx。
- 3)打开Matlab命令窗口并执行
mex –setup
。在C:\ Program Files \ Microsoft Visual Studio中选择“Microsoft Visual C / C ++版本6.0”。这告诉Matlab它需要使用C编译器(而不是Fortran编译器)。您需要安装Microsoft Visual C / C ++。不要选择“C:\ MATLAB6P1 \ sys \ lcc中的Lcc C版本2.4”选项。 4)打开Matlab命令窗口并运行mathrun.m。该程序将编译C文件math.c
。
我看到的文件是belew:
然后我一步一步地做
(1)在以下路径中找到mathlink.h
和ml32i1m.lib
d:\沃尔夫勒姆研究公司\数学\ 8.0 \ SystemFiles \捷径\ MathLink的\ DeveloperKit \的Windows \ CompilerAdditions \ mldev32 \包括 D:\ Wolfram Research \ Mathematica \ 8.0 \ SystemFiles \ Links \ MathLink \ DeveloperKit \ Windows \ CompilerAdditions \ mldev32 \ lib
(2)将压缩文件math.zip
的内容复制到C:\ XXX
(3)在MATLAB中编译
mex -setup
(4)last setp
addpath C:\XXX
run mathrun.m
我不知道为什么?
更新
mathrun.m
addpath C:\XXX;
% adds the directory C:\XXX to the list of directories which Matlab "sees" (referred to as paths)
mlpath='C:\XXX' % The directory where mathlink.h is
mllib='C:\XXX\ml32i1m.lib' % The library ml32i1m.lib
% make command
command=sprintf('mex -D__STDC __ -I % s % s % s', mlpath, 'math.c', mllib);
% compile
eval(command)
答案 0 :(得分:2)
似乎路径未正确传递给mex
,因此无法找到math.c
。评论原始行:
%command=sprintf('mex -D__STDC __ -I % s % s % s', mlpath, 'math.c', mllib);
并添加此代码:
command=sprintf('mex -D__STDC __ -I%s %s %s', mlpath, 'math.c', mllib);
因为mex
文档指定-I
开关和输入路径之间不应有空格。为了安全起见,你甚至可以写:
command=sprintf('mex -D__STDC __ -I%s %s %s', mlpath, fullfile(mlpath,'math.c'), mllib);