Das Verknüpfen der Bibliothek in Release und der EXE-Datei in Debug stürzt in Visual Studio ab
Ich verwende Visual C ++ 2008 SP1. Ich habe eine App, die im Debug-Modus kompiliert wurde, die jedoch im Release-Modus mit einer Bibliothek verknüpft ist.
Beim Starten der Anwendung kommt es zu einem Absturz. Um das Problem zu verkleinern, habe ich eine einfache Lösung mit 2 Projekten erstellt:
lib_release (erzeugt im Release-Modus eine .lib)exec_using_lib_release (generiert eine .exe im Debug-Modus)Das Projekt 'lib_release' ist einfach genug, um eine einfache Klasse zu haben:
//Foo.h
#include <vector>
class Foo {
std::vector<int> v;
public:
void doSomething();
};
//Foo.cpp
#include "Foo.h"
void Foo::doSomething() {}
Das Projekt 'exec_using_lib_release' ist so einfach:
//main.cpp
#include "Foo.h"
int main() {
Foo foo;
foo.doSomething();
return 0;
}
Und es stürzt ab, es ist das gleiche Problem, von dem berichtet wurdeWie erstellen Sie eine Debug-EXE-Datei (MSVCRTD.lib) für eine veröffentlichte Bibliothek (MSVCRT.lib)?, aber seine Antwort hat bei mir nicht funktioniert.
Ich bekomme die gleichen Linker-Warnungen, ich habe die gleichen Schritte versucht, aber keiner hat funktioniert. Fehlt mir etwas?
BEARBEITEN:
Auf der lib_release (die eine Bibliothek im Release-Modus erstellt) verwende ichMulti Threaded (/ MT)und beim exec_using_lib_release verwende ichMulti Threaded Debug (/ MTd). Ich denke, dies ist die erwartete Vorgehensweise, da die .lib ohne Debug-Informationen erstellt werden soll. Ich habe das Dokument unter gelesenMSDN Runtime-Bibliothek und dies sind die Einstellungen für die statische Verknüpfung mit der CRT.
Ich habe auch keine Unterstützung für Common Language Runtime.