Pregunta

Estoy integración .RED de apoyo en nuestra aplicación de C++.
Es una vieja escuela de aplicación MFC, con 1 adicional sobre el archivo compilado con el "/clr" la opción que hace referencia a un CWinFormsControl.

No puedo quitar el enlace de la bandera "/NODEFAULTLIB".
(Tenemos nuestra propia construcción del sistema de gestión, no de Visual Studio.)
Esto significa que tengo que especificar todas las bibliotecas necesarias:Tiempo de ejecución VC y MFC.

Otras opciones del compilador include "/MD"

Junto a que:No puedo usar el enlace de la bandera "/FUERZA:MÚLTIPLES" y acaba de agregar todo:
Estoy buscando una que no se superponen conjunto de bibliotecas.

¿Fue útil?

Solución 3

Cómo he resuelto:

  1. enlace con "/FUERZA:VARIOS /verbose" (que los enlaces ok) y configurar la salida a un lado.
  2. enlace con "/NODEFAULTIB /verbose" y el seguimiento de todo el unresolveds en la salida del paso anterior y agregar las bibliotecas de 1 por 1.
  3. Esto se tradujo en dobles:"AAA.lib:XXX ya se define en el BBB.lib"
  4. Entonces por fin lo conseguí:Vuelve a compilar administrado Y no administrado unidades con /MD y un enlace (entre otros):mscoree.lib msvcmrt.lib mfcm80d.lib

Mezcla /MT (no administrado) y /MD (administrado) resultó ser la mala idea:diferentes(superpuestas) bibliotecas son necesarios.

@ajryan:Dependcy Walker solo me dice lo de la dll se utilizan, no lo que las bibliotecas están ligados a la hora de ligar.(por ejemplo,msvcmrt.lib ?) Creo que.

Gracias por las respuestas!

Jan

Otros consejos

Como mínimo:

mscoree.lib MSVCRT.lib mfc90.lib (ajustar versión adecuadamente)

Y recorrer desde allí.

Utilice el Asistente para aplicaciones para crear un escueto aplicación MFC en su estilo (SDI y MDI / diálogo ) y, a continuación, puesto en ti depende.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top