[gelöst] Laufzeitfehler (Assertation) mit VS.Net 2003
Verfasst: 15. Dezember 2005 21:21
Hy!
Ich habe einen kleinen Fehler bei der Benutzung eines QStrings, wobei der Fehler nicht von dem QString herrühren zu scheint. Sobald ich jedoch auf einen längeren QString (mind. 16 Zeichen) die Methode toStdString anwenden möchte bekomme ich im Debug Mode eine Exception die nicht abgefangen wollte, und zwar einen "User Breakpoint". Es ist jedoch eine Assertation die fehlgeschlagen hat, und zwar "_CrtIsValidHeapPointer(pUserData)".
Gehe ich dort auf Ignore, läuft das Programm problemlos weiter. Lt. dem was ich bei google gefunden habe, kommt das Problem vom mischen von Debug und Release Librarys.
Ich verwende VS.Net 2003 Pro mit folgendem Makefile:
Der Aufruf von toStdString(...) befindet sich in CPacket.cpp, was allerdings irrelevant zu sein scheint, da der Fehler auch bei Aufrufen aus main.cpp und CFebmChat.cpp zu kommen scheint.
Ich muss leider das Makefile benutzen, darf kein qMake verwenden (Schule, etwas engstirniger Lehrer, bin nur froh das das VS Makefile gleich ist wie ein GNU)
Kann mir vielleicht irgendjemand sagen wo der Fehler in meinem Makefile liegt?
mfg
uhu01
Ich habe einen kleinen Fehler bei der Benutzung eines QStrings, wobei der Fehler nicht von dem QString herrühren zu scheint. Sobald ich jedoch auf einen längeren QString (mind. 16 Zeichen) die Methode toStdString anwenden möchte bekomme ich im Debug Mode eine Exception die nicht abgefangen wollte, und zwar einen "User Breakpoint". Es ist jedoch eine Assertation die fehlgeschlagen hat, und zwar "_CrtIsValidHeapPointer(pUserData)".
Gehe ich dort auf Ignore, läuft das Programm problemlos weiter. Lt. dem was ich bei google gefunden habe, kommt das Problem vom mischen von Debug und Release Librarys.
Ich verwende VS.Net 2003 Pro mit folgendem Makefile:
Code: Alles auswählen
# NMake Makefile for nmake_test.exe
EXEC_NAME=febm
BIN_NAME=$(EXEC_NAME).exe
GCC=cl.exe
LNK=link.exe
MOC=C:\prog\qt401\bin\moc.exe
INC_DIR_OPTION=/I
LIB_DIR_OPTION=/LIBPATH:
INC_DIR= $(INC_DIR_OPTION) "C:\prog\vs2003\VC7\include" \
$(INC_DIR_OPTION) "C:\prog\qt401\include" \
$(INC_DIR_OPTION) "C:\prog\Librarys\Include\WinPcap" \
$(INC_DIR_OPTION) "C:\prog\qt401\include\QtCore" \
$(INC_DIR_OPTION) "C:\prog\qt401\include\QtGui"
LIB_DIR= $(LIB_DIR_OPTION)"C:\prog\qt401\lib" \
$(LIB_DIR_OPTION)"C:\prog\vs2003\Vc7\PlatformSDK\Lib" \
$(LIB_DIR_OPTION)"C:\prog\vs2003\VC7\lib" \
$(LIB_DIR_OPTION)"C:\prog\Librarys\Lib"
LIBS= QtGuid4.lib QtCored4.lib wsock32.lib wpcap.lib
GCC_OPTIONS= /c /nologo /W3 /Wp64 /Zi /D "WIN32" /D "_DEBUG" /Gm /EHs /MTd /TP
LNK_OPTIONS= /nologo /SUBSYSTEM:CONSOLE /MACHINE:X86 /DEBUG
PDB_FILE = /Fd"Debug/vc70.pdb"
OBJS= Debug\main.obj Debug\CFebmChat.obj Debug\moc_CFebmChat.obj Debug\CSendThread.obj Debug\CPacket.obj
all: Debug\$(BIN_NAME)
###########################################################
# Executable #
###########################################################
Debug\$(BIN_NAME): $(OBJS)
$(LNK) /OUT:"Debug\$(BIN_NAME)" $(LIB_DIR) $(LIBS) $(OBJS) $(LNK_OPTIONS) /PDB:"Debug\$(EXEC_NAME).pdb"
###########################################################
# main.obj #
###########################################################
Debug\main.obj: main.cpp Debug\CFebmChat.obj
$(GCC) main.cpp $(INC_DIR) $(GCC_OPTIONS) /Fo"Debug/" $(PDB_FILE)
###########################################################
# CFebmChat class #
###########################################################
Debug\CFebmChat.obj: CFebmChat.cpp CFebmChat.h Debug\CSendThread.obj
$(GCC) CFebmChat.cpp $(INC_DIR) $(GCC_OPTIONS) /Fo"Debug/" $(PDB_FILE)
Debug\moc_CFebmChat.obj: CFebmChat.h
$(MOC) CFebmChat.h -o moc_CFebmChat.cpp
$(GCC) moc_CFebmChat.cpp $(INC_DIR) $(GCC_OPTIONS) /Fo"Debug/" $(PDB_FILE)
###########################################################
# CSendThread class #
###########################################################
Debug\CSendThread.obj: CSendThread.cpp CSendThread.h CPacket.h
$(GCC) CSendThread.cpp $(INC_DIR) $(GCC_OPTIONS) /Fo"Debug/" $(PDB_FILE)
###########################################################
# CEthPacket class #
###########################################################
Debug\CPacket.obj: CPacket.cpp CPacket.h
$(GCC) CPacket.cpp $(INC_DIR) $(GCC_OPTIONS) /Fo"Debug/" $(PDB_FILE)
.PHONY: clean rebuild
clean:
del /f /s /q .\Debug\*
rebuild: clean all
Ich muss leider das Makefile benutzen, darf kein qMake verwenden (Schule, etwas engstirniger Lehrer, bin nur froh das das VS Makefile gleich ist wie ein GNU)
Kann mir vielleicht irgendjemand sagen wo der Fehler in meinem Makefile liegt?
mfg
uhu01