Einbinden externer Dateien



  • HALL0.

    ich habe hier ein interessantes tool gefunden, http://archives.math.utk.edu/software/msdos/numerical.analysis/matrix04/.html
    was ich gerne in mein programm integrieren möchte. meine entwicklungsumgebung ist vc++2005 professional.

    leider weis ich nach dem entpacken nicht, wie ich weitermachen muss. würde mich freuen, wenn mir das jemand erklären könnte.

    VIELEN DANK!
    STICK.



  • Hallo,

    einfach die Header - und Sourcedateien zu deinem Projekt hinzufügen? Evtl. noch Linker-Flags setzen? Steht vermutlich alles in der README oder ner INSTALL, einfach mal reinlesen.

    MfG

    GPC



  • TAG.
    - ausser folgendem hinweis stand halt leider nichts in der ReadMe.

    HOW TO COMPILE:

    1. DOS under PC - use Borland's Turbo C 2.0 make -fmakefile.dos
    2 All Unix environment - make -f makefile.ux

    - habe jetzt alle dateien eingefügt, aber es gibt 19 fehler. die meisten sehen so aus:

    error C2108: subscript is not of integral type

    - wie setzt man 'Linker-Flags'?

    VIELEN DANK.
    STICK.



  • stick_thai schrieb:

    - habe jetzt alle dateien eingefügt, aber es gibt 19 fehler. die meisten sehen so aus:

    error C2108: subscript is not of integral type

    schick. Was bedeutet Fehlertyp C2108? Hab hier keinen VC.

    Hast du mal die make Geschichte ausgeführt?

    - wie setzt man 'Linker-Flags'?

    In dem Fall unnötig. Macht man aber über die Projektoptionen, unter dem Punkt Linker.



  • DANKE für die schnelle antwort!

    Compilerfehler C2108: Das Arrayindexfeld entspricht keinem ganzzahligen Ausdruck.

    ich denke, das hilft mir nicht viel weiter, weil ich ja jetzt nicht die ganzen header- und source dateien ändern möchte, oder?

    Hast du mal die make Geschichte ausgeführt?

    würde ich ja gerne. habe aber keine ahnung, wie das unter VC++2005 profession funktioniert. 😞

    DANKE.
    STICK.



  • MSVC hat nmake, soll meinem Unwissen nach kompatibel zu make sein. Einfach mal nmake in dem Verzeichnis ausführen (in der Eingabeaufforderung), wo eine make Datei liegt.

    Die ganze Errorcodes die mit C und LNK anfangen, kann man in der MSDN über den Suchindex eingeben, dann gibts ne ausführliche Beschreibung.

    Ich bezweifel aber mal, das die Funktionen noch im MSVC8.0 funktionieren, nachdem das Copyright in der Readme auf 1993 datiert ist. 😮 Und noch was von DOS und TurboC 2.0 gefaselt wird. 😃



  • stick_thai schrieb:

    DANKE für die schnelle antwort!

    Compilerfehler C2108: Das Arrayindexfeld entspricht keinem ganzzahligen Ausdruck.

    ich denke, das hilft mir nicht viel weiter, weil ich ja jetzt nicht die ganzen header- und source dateien ändern möchte, oder?

    Zeig mal den Code, bei dem der Fehler auftritt.

    Hast du mal die make Geschichte ausgeführt?

    würde ich ja gerne. habe aber keine ahnung, wie das unter VC++2005 profession funktioniert. 😞

    Dazu braucht's kein VC++, make (ist ein Buildtool) läuft in der Shell und man kann sich z.B. hier downloaden: http://www.steve.org.uk/Software/make/
    Wird aber wohl nicht nötig sein.



  • an Artchi:

    also bei uns an der uni hatte das früher mal ein mitarbeiter in VC6.0 integriert und es hat gut funktioniert. ich hoffe mal, dass es deshalb bei MSVC8.0 auch noch klappt.

    an GPC: hier sende ich mal einen ausschnitt aus dem code, der aber sicher nicht viel helfen wird. fehler tritt jedenfalls in zeile 35 auf.

    double mat_det( a )
    MATRIX a;
    {
    	MATRIX	A, P;
    	int	i, j, n;
    	double	result;
    
    	n = MatRow(a);
    	A = mat_copy(a);
    	P = mat_creat(n, 1, UNDEFINED);
    
    	/*
    	* take a LUP-decomposition
    	*/
    	i = mat_lu(A, P);
    	switch (i)
    		{
    		/*
    		* case for singular matrix
    		*/
    		case -1:
    		result = 0.0;
    		break;
    
    		/*
    		* normal case: |A| = |L||U||P|
    		* |L| = 1,
    		* |U| = multiplication of the diagonal
    		* |P| = +-1
    		*/
    		default:
    		result = 1.0;
    		for (j=0; j<MatRow(A); j++)
    			{
    			result *= A[P[j][0]][j];
    			}
    		result *= signa[i%2];
    		break;
    		}
    
    	mat_free(A);
    	mat_free(P);
    	return (result);
    }
    

    ich habe auch inzwischen die make-geschichte probiert, dabei gabs folgende meldung:

    der befehl "nmake" ist entweder falsch geschrieben oder konnte nicht gefunden werden.

    DANKE!!
    STICK.



  • HALLO.

    ich bin jetzt schon einen schritt weiter. habe die ganzen files erneut eingebunden und zeile 2 im unteren code hinzugefügt.

    #include <iostream>
    #include "Files/MATRIX.H"
    
    using namespace std;
    
    int main()
    {
    	MATRIX A;
    
    	A = mat_creat(15,15,UNDEFINED);
    
        return 0;
    }
    

    jetzt gibts nur noch eine fehlermeldung, die ich nicht nachvollziehen kann.
    diese wäre:

    error C2660: 'mat_creat' : function does not take 3 arguments

    die funktion mat_creat nimmt laut definition aber 3 parameter:

    // in der header datei:
    MATRIX mat_creat	(int, int, int);
    // in der matrcreat.c datei
    MATRIX	mat_creat( row, col, type )
    int row, col, type;
    {
    	MATRIX	A;
    
    	if ((A =_mat_creat( row, col )) != NULL)
    		{
    		return (mat_fill(A, type));
    		}
    	else
    		return (NULL);
    }
    

    voran kann das jetzt liegen?

    VIELEN DANK!
    STICK.



  • nmake.exe ist auch nicht im PATH drin, du mußt die Umgebungsvariablen erstmal setzen. Bzw. im MSVC-Verzeichnis gibts ne Batch-Datei, die sich irgendwie vsvar.bat oder so nennt. Oder du gehst auf Start->Programme->MSVisualStudio->Tools->MSVS Prompt/Command oder so ähnlich. Und gibst das ein...



  • stick_thai schrieb:

    double mat_det( a )
    MATRIX a;
    {
      ...
    }
    

    Daß so etwas überhaupt noch durch einen C++ Compiler durchgelassen wird? Das ist ja finsterstes Prä-ANSI-C.


Anmelden zum Antworten