Kompilierungsproblem mit Blitz++ unter gcc 3.3.3

Dieses Thema im Forum "C/C++" wurde erstellt von andrullo, 24.08.2004.

  1. #1 andrullo, 24.08.2004
    andrullo

    andrullo Jungspund

    Dabei seit:
    15.08.2004
    Beiträge:
    13
    Zustimmungen:
    0
    Ort:
    120.0.0.1
    :help:
    Hallo!
    Ich habe ein Numerik-Programm unter SUSE LINUX 7.1
    unter der Verwendung des gcc-Compilers 2.95... und
    der Matrix-Bibliothek Blitz++ Version 6 geschrieben,
    was auch ohne Probleme compiliert wurde.
    Nun verwende ich Blitz++ 7 und gcc 3.3.3, wo der
    Quell-Code nicht mehr fehlerfrei übersetzt wird.
    Leider weiss ich nicht warum und hoffe, das Ihr mir
    vielleicht helfen könnt.
    Hier ein Auszug aus dem Quell-Code und die Fehlermeldung:

    Operatordefintion:
    Array<Real,2> DiffParser:: operator()(const Real& t, const Array<Real,2>& Vars);

    kritischer Code:

    int newton(..., Array<Real,2>& Z,...)
    {
    .
    .
    Z = 0;
    .
    .
    //kritische Zeile:
    Z(Range::all(),Range(j,j)) = f(t_c[j],x+Z(Range::all(),Range(j,j)));
    .
    .
    }

    (Fehler)meldung:

    g++ -c newton.cpp

    newton.cpp: In function `int newton(const Real&, const int&, const blitz::Array<Real, 2>&, DiffParser&, bool, const int&, Real&, bool&, const Real*, const Real*, const bool&, blitz::Array<Real, 2>&, blitz::Array<Real, 2>&,
    const int&, int&, const Real&, const Real&)':
    newton.cpp:148: error: no match for call to
    `(DiffParser) (Real&, blitz::_bz_ArrayExpr<blitz::_bz_ArrayExprOp<blitz::FastArrayIterator<Real, 2>,
    blitz::FastArrayIterator<Real, 2>, blitz::Add<Real, Real> > >)'

    DiffParser.h:25: error: candidates are:
    blitz::Array<Real, 2> DiffParser::operator()(const Real&, const blitz::Array<Real, 2>&)
    make: *** [newton.o] Fehler 1

    Irgendwarum beschwert sich der Compiler, dass ich
    ein Auswertung innerhalb der Funktionsargumente vollziehen
    möchte.
    bisheriges work around:
    Einführen einer temporären Variablen zur Addition zur
    Vermeidung der Auswertung im Funktionsargument

    XTEMP = x+Z(Range::all(),Range(j,j));
    Z(Range::all(),Range(j,j)) = f(t_c[j],XTEMP);

    Mit dieser Abänderung wird der Code wieder
    compiliert. Die Einführung einer temporären
    Variable finde ich aber ineffizient und scheint mir
    (hoffentlich) nicht nötig. Wie schon gesagt, unter den älteren Versionen lief das Programm problemlos.

    Habt Ihr irgendwelche Ideen?

    Gruß
    Andre
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

Kompilierungsproblem mit Blitz++ unter gcc 3.3.3

Die Seite wird geladen...

Kompilierungsproblem mit Blitz++ unter gcc 3.3.3 - Ähnliche Themen

  1. Kernel 3 Kompilierungsproblem unter XEN

    Kernel 3 Kompilierungsproblem unter XEN: Hallo, Ich habe eine openSuse 12.1 und SLES 11 SP1 unter XEN 4.1.2 im HVM Modus laufen. Wenn ich für die beiden System einen neuen Kernel...
  2. Kompilierungsproblem mit PHP5

    Kompilierungsproblem mit PHP5: Hallo, ich versuch grad php5 mit sqli zu kompilieren, allerdings hab ich ein kleines Problem. Ich versuche grad PHP5 mit sqlii zu kompilieren:...