4928

C-Integration

Grundgedanke: Starte einen C-Compiler aus/mit Mathematica, kompiliere den Code und verbinde diesen mit Mathematica.
Weitere Anwendungen:

  • Benutze in Mathematica anstatt dem internen Mathematica-Compiler einen externen C-Compiler
  • Integriere C-Programme in Mathematica und nutze diese als normale Mathematica-Funktionen
  • Integriere C-Programme in Mathematica und parallelisiere diese mit Mathematica
  • Baue eigenständige C-Programme aus Mathematica

.exe, .lib oder .obj

Erstellen von Software

Erstellen einer Executable

Executables lassen sich mit vielen verschiedenen C-Compilern auf verschiedenen Rechnerarchitekturen erstellen. Mit folgendem Mathematica Code lässt sich das bewerkstelligen.

Needs["CCompilerDriver`"]
CreateExecutable["
#include <stdio.h>

int main(){
printf(\"hello world\\n\");
}
", "hello"]

Erstellen einer Library-Datei

Wie bei einer ausführbaren Datei lassen sich Library-Dateien mit vielen Compilern auf verschiedenen Plattformen generieren.

Needs["CCompilerDriver`"]
file = FileNameJoin[ {$CCompilerDirectory, "SystemFiles", "CSource",
"createDLL_demo.c"}];
CreateLibrary[{file}, "demoLibrary"]

Erstellen einer Object-Datei

Die Object-Dateien lassen sich als Eingabe für CreateExeceutable oder CreateLibrary benutzen.

Needs["CCompilerDriver`"]
file = FileNameJoin[ {$CCompilerDirectory, "SystemFiles", "CSource",
"createDLL_demo.c"}];
CreateObjectFile[{file}, "demoLibrary"]