DMUG-Archiv 2023

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: [Dmug] CreateExecutable

Hallo Axel,

das ist mit Mathematica 13.3 weiterhin so,

In[11]:= $Version
Out[11]= "13.3.0 for Microsoft Windows (64-bit) (June 3, 2023)"


man kann "Debug" -> True setzen

------------------------------------------------------------------------

In[9]:= Needs["CCompilerDriver`"];

In[12]:= CreateExecutable[{fnSource, lopassmainSrcFile}, "lowpass",
 "TargetDirectory" -> targetDir,
 "Libraries" -> "WolframRTL_Static_Minimal", "Debug" -> True]

During evaluation of In[12]:=
%LOCALAPPDATA%\Temp\m-c25e6f02-3ff2-4163-a31c-9bcc0c24f145\Working-tracy-12648-19300-2>call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64
**********************************************************************
** Visual Studio 2022 Developer Command Prompt v17.6.5
** Copyright (c) 2022 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'
Microsoft (R) C/C++-Optimierungscompiler Version 19.36.32537 fr x64
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.

lopass.c
lopassMain.c
%LOCALAPPDATA%\m-c25e6f02-3ff2-4163-a31c-9bcc0c24f145\lopassMain.c(2): fatal error C1004: Unerwartetes Dateiende gefunden.
Code wird generiert...

During evaluation of In[12]:= CreateExecutable::cmperr: Compile error: %LOCALAPPDATA%\Temp\m-c25e6f02-3ff2-4163-a31c-9bcc0c24f145\lopassMain.c(2): fatal error C1004: Unerwartetes Dateiende gefunden.

Out[12]= $Failed

------------------------------------------------------------------------


wenn Sie die Dateien anschauen:

%LOCALAPPDATA%\Temp\m-c25e6f02-3ff2-4163-a31c-9bcc0c24f145>dir/O:D
 Datenträger in Laufwerk C: ist Windows
 Volumeseriennummer: 107F-5A4B

 Verzeichnis von %LOCALAPPDATA%\Temp\m-c25e6f02-3ff2-4163-a31c-9bcc0c24f145

17.07.2023  09:50             2’310 lopass.c
17.07.2023  09:50               288 lopass.h
17.07.2023  09:52                13 lopassMain.c
17.07.2023  10:09    <DIR>          .
17.07.2023  10:09    <DIR> Working-tracy-12648-19300-2
17.07.2023  10:11    <DIR>          ..
               3 Datei(en),          2’611 Bytes
               3 Verzeichnis(se), 339’814’338’560 Bytes frei

------------------------------------------------------------------------

%LOCALAPPDATA%\Temp\m-c25e6f02-3ff2-4163-a31c-9bcc0c24f145>more/e lopassMain.c
lopassmainSrc

%LOCALAPPDATA&\Temp\m-c25e6f02-3ff2-4163-a31c-9bcc0c24f145>

------------------------------------------------------------------------

dann ist die Datei lopassMain.c ist ein einziges Wort, daher verunstaltet und ist seit Kernighan und Ritchie 1978 niemals kompilierbar gewesen --- OMG --- das allerallerkleinste C-Programm ist soetwas wie

int main( int argc, char* argv) { return 0;}


Die Verunstaltung kommt daher, dass das zitierte Beispiel eine Auslassung beinhaltet, denn

------------------------------------------------------------------------

       (* Write a C main function to call the generated code. *)

lopassmainSrcFile = FileNameJoin[{targetDir, "lopassMain.c"}];
Export[lopassmainSrcFile, lopassmainSrc, "Text"]

------------------------------------------------------------------------

die Datei lopassmainSrcFile existiert nicht in diesem Beispiel: Copy/Paste - Fehler bei der Erstellung des Manual.

Im Fall muss diese Funktion selbst geschrieben werden und im erzeugten Verzeichnis abgelegt werden.


Mit den besten Grüssen
Udo.







Am 12.07.2023 um 00:55 schrieb Axel Bauer via demug:
Hallo,

zunächst vielen Dank für die Aufnahme in die Liste!

Ich habe folgende Problemstellung:

unter

https://www.wolfram.com/mathematica/new-in-8/integrated-c-workflow/create-standalone-executables-using-compiled-funct.html

findet sich ein interessantes Beipiel für die Ausführung der Mathematica-Funktion "CreateExecutable", in meinem Fall wird damit eine Anbindung an das installierte und auch funktionierende Visual Studio 2022 angezielt, um eine exe-Datei zu erstellen.

Leider funktioniert das bei mir aber nicht. Hier ein Auszug aus der Internetseite:

(* Create Standalone Executables Using Compiled Functions
You can generate and distribute standalone executables. *)

lopass = Compile[{{x, _Real, 1}, dt, RC},
   Module[{a = dt/(RC + dt), yprev = First[x], yi},
    Table[yi = x[[i]] + (1 - a)*yprev;
     yprev = yi;
     yi, {i, 1, Length[x]}]]];


(* Generate C code and a header *)

targetDir = CreateDirectory[]

fnSource = FileNameJoin[{targetDir, "lopass.c"}];

Export[fnSource, lopass];


       (* Write a C main function to call the generated code. *)

lopassmainSrcFile = FileNameJoin[{targetDir, "lopassMain.c"}];
Export[lopassmainSrcFile, lopassmainSrc, "Text"]


       (* Compile it into an executable using the Wolfram Runtime
       Library. *)

Needs["CCompilerDriver`"];

lopassExe =

 CreateExecutable[{fnSource, lopassmainSrcFile}, "lowpass",

  "TargetDirectory" -> targetDir,

  "Libraries" -> "WolframRTL_Static_Minimal"]


$Failed


An dieser Stelle geht es bei mir also nicht mehr weiter.

"fatal error C1004: Unerwartetes Dateiende gefunden" wird in folgender Internetseite kommentiert:

https://learn.microsoft.com/de-de/cpp/error-messages/compiler-errors-1/fatal-error-c1004?view=msvc-170

Doch da ich das obige Beispiel aus einer Internetseite übernommen habe, die sicherlich eine korrekte Wiedergabe ist, sehe ich keine anwendbare Hilfe in dieser learn.microsoft-Seite. Insgesamt kann ich mir keinen Reim darauf machen, wo der Fehler liegen soll.

Übrigens habe ich das obige lopass versuchsweise reduziert auf das einfache lopass = Compile[{{x, _Real,1}}, x];

Doch auch das führt zur gleichen Fehlermeldung.

Ich würde mich über jede Hilfestellung freuen, damit ich anhand des obigen Beispiels mittels Mathematica eigene exe-Dateien dieses Typs erstellen kann.


_______________________________________________
DMUG Deutschsprachiges Mathematica-Forum demug@XXXXXXX.ch
http://www.mathematica.ch/mailman/listinfo/demug
Archiv: http://www.mathematica.ch/archiv.html

Antworten:
Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html