2010-09-25 17 views
55
  • Crear una nueva solución con un proyecto de C++ consola de línea de comandos
  • Crear un nuevo proyecto, biblioteca estática C++
  • Haga que el proyecto de línea de comandos dependa de la biblioteca
  • Asegúrese de que "Dependencias de biblioteca de enlaces" esté activada en Configuración => Enlazador => General (es por defecto)
  • Visual Studio aún no enlazará la biblioteca.

¿Cómo puedo reparar esto? Se trabajó en Visual Studio 2008.Visual Studio 2010 no autolinking bibliotecas estáticas de proyectos que son dependencias como debe suponerse que

Respuesta

80

Esto todavía funciona, pero era changed en VS 2010:

"Con VS2010, que dejó de apoyar a las dependencias del proyecto definir referencias implícitas y también introdujo una nueva forma de definir el proyecto dependencias en el nivel de proyecto. Dado que una referencia de proyecto y una dependencia de proyecto son conceptos cercanos, ambos aplicados a un proyecto, tiene sentido que se representen juntos, de manera consistente, en el archivo de proyecto. Como verá en los fragmentos a continuación, la única diferencia entre una definición de referencia de proyecto y una definición de dependencia de proyecto consiste en los metadatos que definen la inclusión/exclusión del ensamblaje de salida en/desde el proyecto principal l línea de comando de tinta Aunque no eliminamos el cuadro de diálogo "Dependencias del proyecto", recomendamos definir nuevas dependencias del proyecto a través del cuadro de diálogo "Marco y referencias". Debe establecer la propiedad "Salida de ensamblaje de referencia" en la IU de la página de propiedades en falso para una dependencia de proyecto y verdadera para una referencia de proyecto. "

Simplemente haga clic con el botón derecho en el proyecto de consola, seleccione" Propiedades- > Propiedades comunes-> Marco y referencias-> Agregar nueva referencia "y agregue el proyecto de biblioteca estática; también compruebe que" Dependencias de biblioteca de enlaces "sea Verdadero en el lado derecho. Parece que funciona para compilaciones de depuración y versiones. Aprende algo nuevo todos los días.;)

+4

Es necesario añadir proyectos a la solución actual? ¿De qué sirve tener bibliotecas estáticas? –

+5

@UtkarshSinha No necesita "agregar" el proyecto de biblioteca estática a la solución, pero si no es parte de la solución, Visual Studio no puede construirlo. Si tiene una biblioteca estática preconstruida que no forma parte de la solución, esta pregunta no se aplica a usted. – Qwertie

+0

Yo diría "[M $ se asegura de que tengamos que aprender algo nuevo todos los días]" (http://www.joelonsoftware.com/articles/fog0000000339.html) "> :) –

22

Cambiaron la interfaz de usuario para agregar dependencias de proyecto C++ en VS2010, pero curiosamente, sin eliminar la interfaz de usuario anterior, o de ninguna manera indicando que ya no funciona.

Para crear la dependencia en VS2010, debe usar "Agregar nueva referencia" (se puede encontrar en las propiedades del proyecto) y quizás también en el menú contextual del proyecto (no tener VS aquí para verificar)

El viejo diálogo "Dependencias del proyecto" está básicamente roto ahora.

+3

Además, el diálogo dice algo acerca de .Net frameworks, incluso para proyectos puros de C++. Microsoft claramente no ha hecho pruebas de UI básicas en soluciones con múltiples proyectos. Realmente está dando la impresión de que Visual Studio solo está destinado a proyectos de Hello, World. – MSalters

+1

La interfaz de usuario anterior solía hacer _two_ cosas, y estas se han separado. La interfaz de usuario anterior aún compila el orden de dependencia, las propiedades del proyecto ahora manejan el enlace. El hecho de que A necesite compilarse antes de B no significa que B deba vincularse con A. –

+0

VS 2017 ¡Y TODAVÍA ESTÁ ROTO! @ # $! @ # $! @ # $ Pero no eliminado. JFC. > :( – Mordachai

3

Creo que la interfaz de usuario anterior (dependencias) afecta el orden de compilación para Visual Studio, cuando se compila desde el IDE, para obtener información. El nuevo sistema de configuración del proyecto incorpora las referencias en cada archivo de proyecto para que pueda construir desde fuera del IDE (mientras que en versiones anteriores, no podía, porque no obtendría enlaces automáticos para las dependencias, ya que las dependencias solo se realizaban en el nivel de solución)

También hay algunos problemas con proyectos más complejos en el nuevo sistema; específicamente, todos los proyectos binarios resultantes deben tener referencias explícitas a cada biblioteca dependiente para compilar correctamente, mientras que anteriormente podrían heredarse de otras bibliotecas dependientes. La misma causa subyacente, sin embargo.

3

Para MSVC 14 (versión 2015) haga clic derecho en el proyecto, luego "Add->Reference..." y compruebe todas las dependencias necesarias.

Sí, ha cambiado en algún lugar entre 2010 y 2015 versiones. ¡Divertido!

Y si está buscando vincular un proyecto que tiene recursos en él, debe especificar el archivo .res directamente en la lista de dependencias de entrada del vinculador (cuadro de diálogo de propiedades del proyecto) ya que no lo recoge configuración anterior.

ACTUALIZACIÓN

Sigue siendo el mismo (nuevo) el comportamiento en MSVC 2017

+1

Solo para que sepan que esto también funciona para MSVC 2017. –

Cuestiones relacionadas