2011-12-20 23 views
10

Situación:VS2010: Enlace en una única biblioteca estáticamente

Estoy construyendo una biblioteca con VS2010, y tiene una dependencia en LibraryA. Solo estoy usando una de las muchas funciones que ofrece LibraryA, por lo que quiero vincularla estáticamente.

Todo lo que estoy leyendo acerca de esto me dice que establezca todo el proyecto para vincular estáticamente contra MFC, que es algo que no quiero hacer. Estoy bien con mi biblioteca enlazando dinámicamente con las DLL de Windows; Solo quiero vincular estáticamente contra LibraryA solamente.

Enloqueciendo con las ventanas de opciones, parece que no veo esa opción. ¿Es realmente todo o nada?

Gracias, -Ben

+0

"enlace estático contra MVC" es difícil de interpretar. ¿Te refieres a la CRT? Solo importa la opción/MD vs/MT. Las DLL de Windows no son un problema y siempre están vinculadas dinámicamente, no hay otra opción. –

+0

¿LibraryA viene como un dll (con una lib para vincular) o simplemente una lib? Algunas bibliotecas de terceros son ambas para que pueda elegir la forma en que desea vincularlo. Si es su biblioteca/código, puede elegir cómo construirlo y vincularlo. –

+0

@HansPassant - Mi error (fue MFC). Ver http://stackoverflow.com/questions/3230/how-do-you-pack-a-visual-studio-c-project-for-release - La respuesta principal allí habla de ello. Está cerca de mi situación, pero no es lo mismo. – Ben

Respuesta

27

responder a mi propia pregunta aquí:

Todo lo que necesita hacer para enlazar estáticamente una biblioteca en VS es:

1) Añadir el archivo .lib a la lista encontrada en propiedades -> enlazador -> entrada: Dependencias Adicionales.

2) Agregue el directorio en el que se encuentra el archivo .lib en las propiedades -> linker -> general: Directorios de biblioteca adicionales.

Si el archivo .lib es una biblioteca estáticamente vinculada, eso es todo lo que tiene que hacer.

La razón principal por la que estaba confundido era que un archivo .lib también podría ser un archivo complementario junto con un dll, y no una biblioteca estática en sí misma.

+6

No eres un idiota, eres (probablemente) humano. Tenga en cuenta que si está compilando ambos proyectos al mismo tiempo (es decir, en la misma solución), puede configurar un proyecto para que dependa del otro y Visual Studio importará automáticamente la biblioteca sin la necesidad de agregarla explícitamente a "Additional Dependencias ". – adelphus

+2

No es un idiota ... gracias por escribir esta respuesta, la necesitaba. –

+0

Esta publicación también me ayudó: http://stackoverflow.com/questions/6402586/know-if-lib-is-static-or-import – meawoppl

Cuestiones relacionadas