Octave in C++ aufrufen



  • Hallo,
    ich würde gerne Octave Funktionen in einem C++ Programm nutzen.

    In der Octave FAG gibt es dazu ein Beispielprogramm (http://wiki.octave.org/wiki.pl?CategoryFAQ).

    ich habe dazu ein Makefile geschrieben :

    INC= -IC:/Programme/cygwin/usr/include/octave-2.1.73/
    LIB = 
    
    all : hello.o
    	g++ $(INC) -o hello hello.o -lstdc++ 
    hello.o : hello.cpp
    	g++ $(INC) -g -c hello.cpp
    clean :
    	rm -f *.o *.exe
    

    hello.cpp sieht so aus :

    /*
    #include<iostream>
    #include<octave/oct.h>
    #include <octave/config.h>
    
    #include <octave/parse.h>
    
        using namespace std;
    
        int main()
        {
    
          	ColumnVector NumRands(2);
      		NumRands(0) = 9000;
      		NumRands(1) = 1;
      		octave_value_list f_arg, f_ret;
      		f_arg(0) = octave_value(NumRands);
      		f_ret = feval("rand",f_arg,1);
      		Matrix unis(f_ret(0).matrix_value());
    
          cout<<"Hallo Welt\n";
          //Matrix Matrix_3x3(3,3);
          //Matrix_3x3 = [1, 2, 3; 4, 5, 6; 7, 8, 9; ];
          cin.get();
        }
    
    */
    
     #include <iostream>
     #include "octave/oct.h"
    
     int
     main(void)
     {
         std::cout << "Hello Octave world!\n";
    
         const int size = 2;
         Matrix a_matrix = Matrix(size, size);
         for (int row = 0; row < size; ++row)
         {
             for (int column = 0; column < size; ++column)
             {
                 a_matrix(row, column) = (row + 1)*10 + (column + 1);
             }
         }
         std::cout << a_matrix;
    
         return 0;
     }
    

    für beide main Prgramme erhalte ich Fehler beim linken. Ich nehme an, dass ich die octave Library noch angeben muss.
    Leider finde ich sie nirgendwo ? ... Ich nutze windows und cygwin.
    Bei der Cygwin installation kann man Octave mit auswählen.
    Wenn ich in einer Cygwin Konsole "octave" eingebe funktioniert das auch.
    Muss ich dir Octave Library nochmal zusätzlich irgendwie erstellen ?

    Bitte um Tipps,
    Chris



  • kenn octave nicht, aber das wird sich nicht großartig von anderen paketen unterscheiden. normalerweise gibs immer ein paket "programm", welches ausschließlich das programm installiert. wenn du die libs brauchst, gibt es in 99% der fälle auch ein paket "programm-dev", welches die libs, header usw. beinhaltet.

    also ja, du musst die libs extra installieren.



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Hi,

    ich habe in letzter Zeit öfter Octave-Functionen in c++ verwendet. Zum linken verwendet man am besten das von Octave bereitgestellte Programm "mkoctfile". Mit der Option --link-stand-alone macht es ein eigenständiges programm also z.B.

    mkoctfile --link-stand-alone hello.o

    Übrigens habe ich immer Probleme mit Octave und dem namespace std gehabt. Also besser weglassen und stattdessen std::cout schreiben.

    Gruss

    Christof


Anmelden zum Antworten