/ / Kompilovať C-súbor v MATLAB - MATLAB, kompilácia, wolfram-mathematica, mex

Kompilovať C-súbor v MATLAB - MATLAB, kompilácia, wolfram-mathematica, mex

popis

Dostal som Mathematica Symbolický nástroj pre MATLAB - verzia 2.0 tu

Potom som použil dokumentáciu, ktorú si vyskúšala na kompiláciu v prostredí MATLAB

Inštalačné kroky:

  • 1) Choďte na svoje Mathematica a nájdite súbor mathlink.h v E: mathMathematica5.AddOnsMathLinkDeveloperKitWindowsCompilerAdditionsmldev32include " a tiež súbor ml32i1m.lib v E: mathMathematica5.AddOnsMathLinkDeveloperKitWindowsCompilerAdditionsmldev32lib. Skopírujte oba súbory do vopred určeného adresára (odkazujeme na tento adresár ako C: xxx).
  • 2) Skopírujte obsah komprimovaného súboru math.tar do C: xxx.
  • 3) Otvorte okno príkazu Matlab a spustite ho mex –setup, Zvoľte "Microsoft Visual C / C ++ verzie 6.0 v C: Programové súbory Microsoft Visual Studio ". Toto informuje Matlab, že potrebuje kompilátor C (na rozdiel od kompilátora Fortran). Budete potrebovať Microsoft Visual C / C ++ nainštalovaný. Nevyberajte voľbu "Lcc C verzia 2.4 v C: MATLAB6P1syslcc". 4) Otvorte okno príkazu Matlab a spustite mathrun.m. Tento program bude kompilovať súbor C math.c.

Súbor, ktorý som dostal ako béžová:

tu zadajte popis obrázku

Potom krok za krokom

(1) Nájdite mathlink.h a ml32i1m.lib v nasledujúcej ceste

D: WolframResearchMathematica8.0SystemFilesLinksMathLinkDeveloperKitWindowsCompilerAdditionsmldev32include D: Wolfram ResearchMathematica8.0SystemFilesLinksMathLinkDeveloperKitWindowsCompilerAdditionsmldev32lib

(2) Skopírujte obsah komprimovaného súboru math.zip do C: XXX

tu zadajte popis obrázku

(3) Kompilácia v MATLABe

  mex -setup

tu zadajte popis obrázku tu zadajte popis obrázku

(4) posledné nastavenie

addpath C:XXX
run mathrun.m

tu zadajte popis obrázku

Neviem prečo?


aktualizovať

Matlab kód v 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:XXXml32i1m.lib"   % The library ml32i1m.lib

% make command
command=sprintf("mex -D__STDC __ -I % s % s % s", mlpath, "math.c", mllib);
% compile
eval(command)

odpovede:

2 pre odpoveď č. 1

Zdá sa, že cesta nie je správne odovzdaná mex, takže to nemôže nájsť math.c, Komentujte pôvodný riadok:

%command=sprintf("mex -D__STDC __ -I % s % s % s", mlpath, "math.c", mllib);

a pridajte túto adresu:

command=sprintf("mex -D__STDC __ -I%s %s %s", mlpath, "math.c", mllib);

pretože mex dokumentácia špecifikuje, že medzi miestom nesmie byť žiadny priestor -I prepínač a vstupná cesta. Ak chcete byť naozaj na bezpečnej strane, môžete dokonca napísať:

command=sprintf("mex -D__STDC __ -I%s %s %s", mlpath, fullfile(mlpath,"math.c"), mllib);