Estoy usando Visual C++ 2008 SP1. Tengo una aplicación compilada en modo de depuración, pero enlaces contra una biblioteca en modo de lanzamiento.Vinculación con la biblioteca en versión y .exe en errores de depuración en Visual Studio
Estoy recibiendo un bloqueo en el inicio de la aplicación. Para hacer el problema más pequeño, creé una solución simple con 2 proyectos:
- lib_release (genera un .lib, en modo de lanzamiento)
- exec_using_lib_release (genereates un .exe, en modo de depuración)
El proyecto 'lib_release' es lo suficientemente simple para tener una clase simple:
//Foo.h
#include <vector>
class Foo {
std::vector<int> v;
public:
void doSomething();
};
//Foo.cpp
#include "Foo.h"
void Foo::doSomething() {}
El proyecto 'exec_using_lib_release' es tan simple como esto:
//main.cpp
#include "Foo.h"
int main() {
Foo foo;
foo.doSomething();
return 0;
}
Y se bloquea, es el mismo problema reportado por How do you build a debug .exe (MSVCRTD.lib) against a release built lib (MSVCRT.lib)?, pero su respuesta no funcionó para mí.
Recibo las mismas advertencias del enlazador, probé con los mismos pasos, pero ninguno funcionó. ¿Se me escapa algo?
EDIT:
Por lib_release (que crea una biblioteca en modo de lanzamiento), estoy usando multihilo (/ MT), y al exec_using_lib_release, estoy usando multihilo Depurar (/ MTd). Creo que esta es la forma esperada de hacerlo, ya que quiero que la .lib se cree sin información de depuración. Leí el documento al MSDN Runtime library y esas son las configuraciones de vinculación contra el CRT de una manera estática.
No tengo 'Common Language Runtime Support' tampoco.
Es este el código exacto de la muestra (foo.h) o es simplificado y no lo que realmente intentado? – Timbo
@Timbo es casi lo mismo, solo que la clase Foo tiene una versión .cpp que tiene implementado el método doSomething(). –
¿Es usted el proveedor de la lib estática o es un tercero? – KJAWolf