Debug/release funktioniert -------- .exe allein nicht.



  • Hey, schon wieder eine ***cking Noobfrage 😃
    Folgendes Problem:

    Starte ich mein Projekt in Visual Studio 2008; kann es normal kompilieren, und mit den Buttons DEBUG und RELEASE krieg ich die mein Programm auch wunderbar zum Laufen.
    Führe ich jedoch die soeben erstellte .exe direkt aus, startet das Programm (keine Fehler werden angezeigt) schliesst sich aber nach ausführen von Teilen des Programms wieder.
    zb. ******Pause 1 wird noch ausgeführt, ein anderer Teil jedoch nicht (zb. *****Pause 2)

    Ich gehe schwer davon aus das ich irgendwas mit den Headerfile oder Bibliotheken verbockt habe. Nur was? 😕 Und noch wichtiger: Wie beheb ich den Fehler? Damit ich die .exe ausführen kann?

    Nur so als Frage: Macht Vc++ wenn ich auf Release klicke nicht: compilieren+compilierte exeDatei auführen?

    #ifdef _CH_ 
    #pragma package <opencv> 
    #endif 
    
    #define CV_NO_BACKWARD_COMPATIBILITY 
    
    #ifndef _EiC 
    #include "cv.h" 
    #include "highgui.h"
    
    #include <stdio.h>
    #include <iostream>
    #include <windows.h>
    #endif 
    using namespace std;
    int threshold_Value = 160; 
    int ellipses_coords[6][2];
    int max_ellipse_r=100;
    
    // Load the source image. HighGUI use. 
    IplImage *image_binary = 0, *image_origin = 0, *image_cropped = 0; 
    
    void process_image(int h); 
    
    int main( int argc, char** argv ) 
    {	double zeit1=GetTickCount();
    ellipses_coords[0][0]= 200;
    ellipses_coords[0][1]= 100;
    ellipses_coords[1][0]= 200;
    ellipses_coords[1][1]= 100;
    Sleep(2000); [b]                      //*********************************PAUSE 1[/b]	
    
    const char* filename = argc == 2 ? argv[1] : (char*)"stuff.bmp"; 
    
        // load image and force it to be grayscale 
        if( (image_origin = cvLoadImage(filename, 0)) == 0 ) 
            return -1; 
    	image_binary = cvCloneImage( image_origin );
    
    	// Threshold the source image. This needful for cvFindContours(). 
        cvThreshold( image_origin, image_binary, threshold_Value, 255, CV_THRESH_BINARY ); 
    
    	cvSetImageROI(image_binary, cvRect(ellipses_coords[0][0], ellipses_coords[0][1], max_ellipse_r , max_ellipse_r));
    
        image_cropped = cvCloneImage( image_binary ); 
    	cvResetImageROI(image_binary);
    
        // Create windows. 
        cvNamedWindow("Source: image_origin", 1); 
        cvNamedWindow("Result: image_cropped", 1); 
    
        // Show the image. 
    	cvShowImage("Source: image_origin", image_origin);  
    
    	process_image(0); 
    	Sleep(2000000000); [b]                      //*********************************PAUSE 2[/b]	
             double zeit2=GetTickCount();
    	double time=zeit2-zeit1;
    	cout<<"benoetigte Zeit:\n";
    	cout<<time;
    
        // Wait for a key stroke; the same function arranges events processing 
    
    	cvWaitKey(0); 
        cvReleaseImage(&image_binary); 
        cvReleaseImage(&image_origin); 
    	cvReleaseImage(&image_cropped);
    	cvDestroyWindow("Source: image_origin"); 
        cvDestroyWindow("Result: image_cropped"); 
    
        return 0; 
    } 
    
    // Define trackbar callback functon. This function find contours, 
    // draw it and approximate it by ellipses. 
    void process_image(int h) 
    { 
    blabalbalabalabal 
    } 
    
    #ifdef _EiC 
    main(1,"fitellipse.c"); 
    #endif
    


  • Vielleicht wird dein Programm ja einfach per return beendet, wie von dir programmiert. Pack doch mal eine Ausgabe (z.B. MessageBox) rein, ob cvLoadImage überhaupt erfolgreich war (wenn nicht, hüpfst du nämlich mit return -1 raus).



  • Danke für den Tipp.... aber es war viel einfacher. er hat ein Bild nicht gefunden.... 😃

    Immer diese Noobs, mit ihren einfachen Problemen 😃



  • Lepetitmort schrieb:

    Danke für den Tipp.... aber es war viel einfacher. er hat ein Bild nicht gefunden.... 😃

    Ja, und ist da nicht die Erklärung, dass cvLoadImage fehlgeschlagen ist? :p



  • Ohhhh du hast ja recht 😃 Mist ich war so stolz das ich das Problem selber gelöst habe und jetzt warst doch du es 😃


Anmelden zum Antworten