2016-05-05 4 views
0

Ich habe alles versucht, und ich kann nicht einmal diesen einfachen Grafikcode starten. Ich habe die graphics.h, winbgim.h und libbgi.a in allen richtigen Ordnern installiert. (include und lib). Linker, auch -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32C++ - Warnung nicht erhalten: (& Absturz nach) veraltete Konvertierung von String-Konstante in 'char *' [-Write-Zeichenfolgen]

Ich benutze CodeBlocks 16.01. Ich habe es auch in Dev-C++ ohne Glück versucht.

Zuerst bekam ich Fehler:

C:\Program Files (x86)\CodeBlocks\MinGW\include\graphics.h|302|error: redefinition of 'int right'

Aber ich gelöst, dass die graphics.h Datei durch Ändern, int right mit int top ersetzt werden muss.

Auch gibt es 1 Warnung -

C:\Users\Davor\Desktop\New Project\drugi\main.cpp||In function 'int main()':| C:\Users\Davor\Desktop\New Project\drugi\main.cpp|15|warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]| ||=== Build finished: 0 error(s), 1 warning(s) (0 minute(s), 0 second(s)) ===|

Danach, wenn ich drücke 'erstellen und ausführen' i

" *.exe has stopped working. " In the background I first get -

Process returned 255 (0xFF) execution time : 91.666 s Press any key to continue.

bekommen Aber jedes andere Mal, wenn ich -

Process returned -1073741819 (0xC0000005) execution time : 26.494 s Press any key to continue.

#include <iostream> 
#include <cstdlib> 
#include <graphics.h> 


using namespace std; 



int main() { 

    int gdriver = 9; 
    int gmode = 2; 
    int x; 
    initgraph(&gdriver, &gmode, ""); 
    setbkcolor (WHITE); 
    setcolor (BLACK); 
    cleardevice(); 
    for (x = 260; x < 364; x = x + 5) 
    { 
     circle(x,240,60); 
    } 
    getch(); 
    closegraph(); 

    return 0; 
} 
+0

das dritte Argument in 'initgraph' ist Pfad, den Sie leer gehalten haben, wie wird es dann den Treiber laden? – piyushj

+0

Mögliches Duplikat von [C++ - Warnung: veraltete Konvertierung von String-Konstante in 'char \ *' \ [-Write-strings \]] (http://stackoverflow.com/questions/21529194/c-warning-deprecated-conversion-from -string-constant-to-char-wwrite-stri) – HadeS

Antwort

0

Ich habe die Lösung gefunden.

Das Problem war in der nächsten Bibliothek:

libbgi.a

ich unterschiedliche Sever versucht, aber am Ende fand ich die richtigen. Sobald ich es durch das alte ersetzt habe - das Grafikfenster hat sich geöffnet und funktioniert einwandfrei, ohne Abstürze.

Die Warnung:

deprecated conversion from string constant to 'char*' [-Wwrite-strings]|

ist noch da, aber der Code funktioniert perfekt.

Danke für die Hilfe trotzdem.

Prost.

0

Ohne zu suchen ide <graphics.h>, Es scheint, dass initgraph() deklariert wird als ein (non-const) char * als dritter Parameter nehmen - was darauf hindeutet, dass es eine Ausgabe Parameter ist, zeigt auf eine beschreibbare Char-Array, die initgraph() schreiben wird.

Neben der Produktion von der Warnung Sie zitiert haben, vorbei an der String-Konstante "" als Argument in undefinierten Verhalten führen würde, von denen Krachen ein perfektes Beispiel ist.

Während meine Bemerkungen über gültig sind, nachdem sie an der Dokumentation suchen Ich würde vermuten, dass der Parameter nicht ein Ausgabeparameter ist, und dass der Mangel an const ist einfach schlechte API-Implementierung - wie das offensichtliche Fehlen jeder ist bedeutet, festzustellen, ob die Initialisierung tatsächlich erfolgreich war oder nicht ...

+0

Irgendwelche Gedanken, wie Sie dieses Problem lösen können? Danke vielmals. – szentmihaly

+0

Witzigerweise würde ich vorschlagen, dass Sie die Dokumentation lesen. – Jeremy

+0

Mehr hilfreich, würde ich Sie auf die Anweisung in (was ich annehmen, ist) die Dokumentation, die sagt, "wenn pathtodriver ist null, die Treiberdateien (*. BGI) müssen im aktuellen Verzeichnis". – Jeremy

Verwandte Themen