Hallo Axel,
lopassMain.c auf der Webseite gefunden und in die Beilage gelegt,
damit dann
------------------------------------------------------------------------
In[24]:= FileNames["lopass*", NotebookDirectory[]]
Out[24]= {"N:\\Udo\\Abt_N\\lopassMain.c"}
In[43]:= CopyFile["N:\\Udo\\Abt_N\\lopassMain.c", lopassmainSrcFile,
OverwriteTarget -> True]
Out[43]=
"%LOCALAPPDATA%\\Temp\\m-c25e6f02-3ff2-4163-a31c-9bcc0c24f145\\lopassMain.c"
In[44]:= CreateExecutable[{fnSource, lopassmainSrcFile}, "lowpass",
"TargetDirectory" -> targetDir,
"Libraries" -> "WolframRTL_Static_Minimal", "Debug" -> True]
During evaluation of In[44]:=
%LOCALAPPDATA%\Temp\m-c25e6f02-3ff2-4163-a31c-9bcc0c24f145\Working-tracy-12648-19300-13>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 fr x64
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.
lopass.c
lopassMain.c
%LOCALAPPDATA%\Temp\m-c25e6f02-3ff2-4163-a31c-9bcc0c24f145\lopassMain.c(47):
warning C4090: "=": Unterschiedliche "const"-Qualifizierer
Code wird generiert...
Microsoft (R) Incremental Linker Version 14.36.32537.0
Copyright (C) Microsoft Corporation. All rights reserved.
/out:lopass.exe
/debug
user32.lib
kernel32.lib
gdi32.lib
"/LIBPATH:C:\Program Files\Wolfram
Research\Mathematica\13.3\SystemFiles\Links\MathLink\DeveloperKit\Windows-x86-64\CompilerAdditions"
"/LIBPATH:C:\Program Files\Wolfram
Research\Mathematica\13.3\SystemFiles\Libraries\Windows-x86-64"
WolframRTL_Static_Minimal.lib
/out:%LOCALAPPDATA%\Temp\m-c25e6f02-3ff2-4163-a31c-9bcc0c24f145\Working-tracy-12648-19300-13\lowpass.exe
lopass.obj
lopassMain.obj
Bibliothek
"%LOCALAPPDATA%\Temp\m-c25e6f02-3ff2-4163-a31c-9bcc0c24f145\Working-tracy-12648-19300-13\lowpass.lib"
und Objekt
"%LOCALAPPDATA%\Temp\m-c25e6f02-3ff2-4163-a31c-9bcc0c24f145\Working-tracy-12648-19300-13\lowpass.exp"
werden erstellt.
LINK : warning LNK4098: Standardbibliothek "LIBCMT" steht in Konflikt
mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.
Out[44]= \
"%LOCALAPPDATA%\\Temp\\m-c25e6f02-3ff2-4163-a31c-9bcc0c24f145\\lowpass.exe"
In[47]:= FileNames[All, targetDir][[1 ;; 4]]
Out[47]= \
{"%LOCALAPPDATA%\\Temp\\m-c25e6f02-3ff2-4163-a31c-9bcc0c24f145\\lopass.c", \
"%LOCALAPPDATA%\\Temp\\m-c25e6f02-3ff2-4163-a31c-9bcc0c24f145\\lopass.h", \
"%LOCALAPPDATA%\\Temp\\m-c25e6f02-3ff2-4163-a31c-9bcc0c24f145\\lopassMain.c", \
"%LOCALAPPDATA%\\Temp\\m-c25e6f02-3ff2-4163-a31c-9bcc0c24f145\\lowpass.exe"}
------------------------------------------------------------------------
es empfiehlt sichm den LNK4098 zu behandeln, dann hat man zur Laufzeit
Viel Spass!
udo.
P.S.: Auf der webseite
https://www.wolfram.com/mathematica/new-in-8/integrated-c-workflow/create-standalone-executables-using-compiled-funct.html
verbirgt sich die Datei lopassMain als String hinter einem kleinen
Kästchen mit Pluszeichen: "show complete Mathematica input" steht
daneben 😬
Am 17.07.2023 um 10:35 schrieb Susanne & Udo Krause via demug:
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.
_______________________________________________
DMUG Deutschsprachiges Mathematica-Forum demug@XXXXXXX.ch
http://www.mathematica.ch/mailman/listinfo/demug
Archiv: http://www.mathematica.ch/archiv.html
#include "stdio.h"
#include "stdlib.h"
#include "lopass.h"
#include "WolframRTL.h"
#include "lopass.h"
static WolframLibraryData libData = 0;
int main()
{
int err = 0;
mint i, type, rank, nelems, *dims;
double *data;
MTensor x, y;
double dt;
double RC;
libData = WolframLibraryData_new(WolframLibraryVersion);
/* read x */
type = MType_Real;
rank = 1;
dims = (mint*)malloc(rank * sizeof(mint));
scanf(" %d", (int *)&nelems);
dims[0] = nelems;
err = (*(libData->MTensor_new))(type,rank, dims, &x);
if (err) return 1;
free(dims);
data = (*(libData->MTensor_getRealData))(x);
for(i = 0; i < nelems; i++) {
scanf(" %lf", &(data[i]));
}
/* read dt */
scanf(" %lf", &dt);
/* read RC */
scanf(" %lf", &RC);
err = Initialize_lopass(libData);
y = 0;
err = lopass(libData, x, dt, RC, &y);
printf("%d\n", err);
if(0 == err){
dims = libData->MTensor_getDimensions(y);
nelems = dims[0];
data = (*(libData->MTensor_getRealData))(y);
printf("%d\n", (int)nelems);
for(i = 0; i < nelems; i++)
printf("%f\n", data[i]);
}
Uninitialize_lopass(libData);
return 0;
}
_______________________________________________
DMUG Deutschsprachiges Mathematica-Forum demug@XXXXXXX.ch
http://www.mathematica.ch/mailman/listinfo/demug
Archiv: http://www.mathematica.ch/archiv.html