DMUG-Archiv 2023

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

Re: [Dmug] CreateExecutable

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 fr 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
Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

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