"Debug Assertion Failed" bei Vermischung nativen/managed Code
-
Hey, ich durfte heute eine Erfahrung mit einem "Debug Assertion Failed" Fehler machen. Der Fehler ist der gleiche wie hier beschrieben. Hier nochmal:
Microsoft Visual C++ Debug Library
---------------------------
Debug Assertion Failed!Program: C:\Pfad\zu\Debug\programm.exe
File: C:\pfad\zu\src\dbgheap.c // so oder so ähnlich
Line: 1511Expression: _CrtIsValidHeapPointer(pUserData)
For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.(Press Retry to debug the application)
Glücklicherweise fand sich auf der o.g. Seite auch eine Lösung, aber mir stellt sich immer noch die Frage, wieso das nicht einfach mit der Default-Konfiguration, also "main" als Entry-Point funktioniert.
Zum Hintergrund: Ich habe eine kleine native C++-Anwendung geschrieben und wollte dieser im Nachhinein noch eine nette GUI mit .NET verpassen, jedoch tat sich dieser unliebsame Fehler auf. Wie gesagt es geht zwar, aber ich frage mich halt warum. *neugierde*
-
Du verwendest vermutlich eine andere Version der CRT... ist boost als DLL gelinkt?
-
Ich benutze bei meinem Programm SFML, welches dynamisch gelinkt ist und boost::regex, das eigentlich nur aus Headern besteht, wenn ich mich recht entsinne. Oh, und noch "boost/algorithm/string.hpp", aber ich weiß nicht wie es gelinkt ist, da ich Boost mit dem Installer installiert habe.
Edit: Ich glaube es ist statisch gelinkt, da die Namen der .lib Files im boost/lib Ordner alle "mt" enthalten.
-
issen1 schrieb:
und boost::regex, das eigentlich nur aus Headern besteht, wenn ich mich recht entsinne.
Tust du nicht, Boost.Regex muss man bauen.
-
Du hast Recht, ich hatte die Liste auf der boost Seite genau anders herum interpretiert, ich sollte mir angewöhnen bestimmte Textstellen genauer zu lesen. Die Frage wie meine boost Library gelinkt ist, kann ich so nicht beantworten, da sich in meinem boost/lib Ordner einige .lib Dateien befinden, unter anderem welche mit dem 's'-Key für statisches Linken und einige ohne. Und da ich nicht explizit in meinem Visual Studio Projekt angegeben habe, welche .lib gelinkt werden soll, weiß ich nicht welche verwendet wird. Gibt es da eine Möglichkeit, das nachzuschauen?