Łączenie z biblioteką w wydaniu i .exe w debugowaniu powoduje awarię w Visual Studio
Używam Visual C ++ 2008 SP1. Mam aplikację skompilowaną w trybie debugowania, ale łącza do biblioteki w trybie zwolnienia.
Mam awarię przy uruchomieniu aplikacji. Aby zmniejszyć problem, stworzyłem proste rozwiązanie z 2 projektami:
lib_release (generuje .lib, w trybie wydania)exec_using_lib_release (generuje plik .exe w trybie debugowania)Projekt „lib_release” jest wystarczająco prosty, aby mieć prostą klasę:
//Foo.h
#include <vector>
class Foo {
std::vector<int> v;
public:
void doSomething();
};
//Foo.cpp
#include "Foo.h"
void Foo::doSomething() {}
Projekt „exec_using_lib_release” jest prosty:
//main.cpp
#include "Foo.h"
int main() {
Foo foo;
foo.doSomething();
return 0;
}
I to się załamuje, jest to ten sam problem, który zgłosiłW jaki sposób zbudować debugowanie .exe (MSVCRTD.lib) w stosunku do biblioteki wbudowanej wersji (MSVCRT.lib)?, ale jego odpowiedź nie zadziałała dla mnie.
Dostaję te same ostrzeżenia o linkerze, próbowałem tych samych kroków, ale żaden nie działał. Czy czegoś brakuje?
EDYTOWAĆ:
W bibliotece lib_release (która tworzy bibliotekę w trybie wydania) używamMulti Threaded (/ MT)i w exec_using_lib_release używamDebugowanie wielowątkowe (/ MTd). Myślę, że jest to oczekiwany sposób na zrobienie tego, ponieważ chcę, aby plik .lib był tworzony bez informacji debugowania. Przeczytałem dokument pod adresemBiblioteka uruchomieniowa MSDN i są to ustawienia łączenia się z CRT w sposób statyczny.
Nie mam też „Common Language Runtime Support”.