Was ist mit diesem "CRT nicht initialisiert werden" Fehler?

Erstellte ich ein leeres C++ - Projekt in Visual Studio 2012 Express (für Desktop natürlich), und Hinzugefügt einige zufällige basic-code:

#include <cstdio>
#include <cstdlib>

typedef struct examplestruct
{
    unsigned char num1;
    unsigned short num2;
    unsigned long num3;
    unsigned long long num4;
} EXAMPLESTRUCT;

void examplefunction(unsigned long *num, int num2)
{
    *num += num2;
    return;
}

int main(int nArgs, char **pszArgs)
{
    EXAMPLESTRUCT ExStructInstance = {0xFF, 0xFFFF, 0xFFFFFFFF, 0xFFFFFFFFFFFFFFFF};
    printf("%d, %d, %u, %ull\n", ExStructInstance.num1, ExStructInstance.num2, ExStructInstance.num3, ExStructInstance.num4);
    unsigned long num5 = ExStructInstance.num1 + ExStructInstance.num2;
    printf("%d\n", num5);
    examplefunction(&num5, 10);
    printf("%d\n", num5);
    system("pause");
    return 0;
}

(Wenn Sie sich Fragen, was die Hölle ist über, ich bin Demontage die erstellte executable-Datei zu beobachten, das Verhalten der optimierende compiler, und auch mehr darüber zu erfahren x86 assembly.)

Unter Linker in den Projekt-Einstellungen habe ich ausgewählt Multi-threaded (/MT) für die runtime-Bibliothek, also wäre es statisch verlinken.

Ich kompiliert und gestartet Debuggen mit F5 und sofort bekam diese Fehlermeldung in einer message-box:

Runtime Error!

Programm: C:\Users\xxxxx\Documents\P...

R6030

  • CRT nicht initialisiert

So, in diesem basic-Programm wird nicht ausgeführt werden, aufgrund von einigen problem mit der runtime library, die ich nicht herausfinden können!

Irgendwelche Ideen? Ich würde nur gerne wissen, was hier Los ist. Vielen Dank im Voraus!

EDIT: zur info, dies ist alles in den Release-Modus.

  • Sie sagen, Sie kompiliert und gestartet Debuggen, aber Sie sagen auch, Sie arbeiten im release-Modus. Sind Sie sicher, dass diese zwei Punkte?
  • Überprüfen Sie diese - blogs.technet.com/b/virtualworld/archive/2010/07/07/...
  • ist es möglich, debug-builds, so lange wie die build-kompiliert mit debug-Informationen aktiviert, selbst wenn nicht könnte man immer noch einen debugger anfügen, in der Montage aber
  • Ja, debug-Informationen ist, und ich nur tun, es als eine schnelle Möglichkeit, um das Programm auszuführen, sowieso.
  • Das ist nicht wirklich relevant - es ist der Umgang mit der Verknüpfung von Fremdanbieter-DLLs, und wie Sie verwirrt mit statischer/dynamischer Verknüpfung der CRT, und ich bin nicht mit jeder Drittanbieter-DLLs.
  • Können Sie debugger beenden, wenn die Meldung erscheint?
  • Sie schreiben, "sofort bekam diese Fehlermeldung in einer message-box". Nicht sicher 100% mit 2012 studio, aber dachte, dass Sie versuchen, erstellen von Konsolenanwendung, aber linker denke, das ist die GUI.
  • siehe meine eigene Antwort
  • Sie kann und darf nicht "in der Nähe" eine Frage, die nur durch das hinzufügen GESCHLOSSEN, um den Titel, nur weil Sie herausgefunden die Antwort. Einfach posten Sie Ihre eigene Antwort, und markieren Sie diese dann als angenommen, wenn es besser ist als das bestehende.
  • Ah, sorry.

InformationsquelleAutor Archimaredes | 2012-10-20
Schreibe einen Kommentar