Vinculación

En un proyecto de C++, el paso de vinculación se realiza después de que el compilador haya compilado el código fuente en archivos de objeto (*.obj). El vinculador (link.exe) combina los archivos de objeto en un único archivo ejecutable.

Las opciones del vinculador se pueden establecer dentro o fuera de Visual Studio. En Visual Studio, puede acceder a las opciones del vinculador haciendo clic con el botón derecho en un nodo de proyecto en Explorador de soluciones y eligiendo Propiedades para mostrar las páginas de propiedades. Elija Vinculador en el panel izquierdo para expandir el nodo y ver todas las opciones.

Sintaxis de la línea de comandos del vinculador

Al ejecutar LINK fuera de Visual Studio, puede especificar la entrada de una o varias maneras:

  • En la línea de comandos

  • Uso de archivos de comandos

  • En variables de entorno

LINK primero procesa las opciones especificadas en la variable de entorno LINK, seguidas de las opciones en el orden en que se especifican en la línea de comandos y en los archivos de comandos. Si una opción se repite con argumentos diferentes, el último procesado tiene prioridad.

Las opciones se aplican a toda la compilación; no se puede aplicar ninguna opción a archivos de entrada específicos.

Para ejecutar LINK.EXE, use la siguiente sintaxis de comando:

LINK arguments

Las arguments opciones de incluir y los nombres de archivo y se pueden especificar en cualquier orden. Las opciones se procesan primero y, a continuación, los archivos. Use uno o varios espacios o pestañas para separar argumentos.

Nota

Esta herramienta solo se puede iniciar desde el Visual Studio de comandos. No puede iniciarla desde un símbolo del sistema ni desde el Explorador de archivos.

Línea de comandos

En la línea de comandos, una opción consta de un especificador de opción, un guión (-) o una barra diagonal (/), seguido del nombre de la opción. Los nombres de opción no pueden abreviarse. Algunas opciones toman un argumento, especificado después de dos puntos (:). No se permiten espacios ni tabulaciones dentro de una especificación de opción, excepto dentro de una cadena entre comillas en la opción /COMMENT. Especifique argumentos numéricos en notación decimal o en lenguaje C. Los nombres de opción y sus argumentos de palabra clave o nombre de archivo no distinguen mayúsculas de minúsculas, pero los identificadores como argumentos distinguen mayúsculas de minúsculas.

Para pasar un archivo al vinculador, especifique el nombre de archivo en la línea de comandos después del comando LINK. Puede especificar una ruta de acceso absoluta o relativa con el nombre de archivo y puede usar caracteres comodín en el nombre de archivo. Si omite el punto (.) y la extensión de nombre de archivo, LINK asume .obj con el fin de buscar el archivo. LINK no usa extensiones de nombre de archivo ni la falta de ellas para realizar suposiciones sobre el contenido de los archivos; determina el tipo de archivo mediante su examen y lo procesa en consecuencia.

link.exe devuelve cero para que se haya correcto (sin errores). De lo contrario, el vinculador devuelve el número de error que detuvo el vínculo. Por ejemplo, si el vinculador genera LNK1104, el vinculador devuelve 1104. En consecuencia, el número de error más bajo devuelto por el vinculador es 1000. Un valor devuelto de 128 representa un problema de configuración con el sistema operativo o con .config archivo; el cargador no se ha cargado link.exe o c2.dll.

Puede pasar argumentos de línea de comandos a LINK en forma de archivo de comandos. Para especificar un archivo de comandos para el vinculador, use la sintaxis siguiente:

LINK @commandfile

El archivo de comandos es el nombre de un archivo de texto. No se permite ningún espacio ni tabulación entre el signo en ( @ ) y el nombre de archivo. No hay ninguna extensión predeterminada; debe especificar el nombre de archivo completo, incluida cualquier extensión. No se pueden usar caracteres comodín. Puede especificar una ruta de acceso absoluta o relativa con el nombre de archivo. LINK no usa una variable de entorno para buscar el archivo.

En el archivo de comandos, los argumentos se pueden separar por espacios o tabulaciones (como en la línea de comandos) y por caracteres de nueva línea.

Puede especificar todo o parte de la línea de comandos en un archivo de comandos. Puede usar más de un archivo de comandos en un comando LINK. LINK acepta la entrada del archivo de comandos como si se hubiera especificado en esa ubicación en la línea de comandos. Los archivos de comandos no se pueden anidar. LINK hace eco del contenido de los archivos de comandos, a menos que se especifique la opción /NOLOGO.

Ejemplo

El comando siguiente para compilar un archivo DLL pasa los nombres de archivos de objeto y bibliotecas en archivos de comandos independientes y usa un tercer archivo de comandos para la especificación de la opción /EXPORTS:

link /dll @objlist.txt @liblist.txt @exports.txt

La herramienta LINK usa las variables de entorno siguientes:

  • LINK y _LINK_, si se definen. La herramienta LINK antepone las opciones y los argumentos definidos en la variable de entorno LINK, y anexa las opciones y los argumentos definidos en la variable de entorno _LINK_ a los argumentos de la línea de comandos antes del procesamiento.

  • LIB, si se define. Las herramientas LINK usan la ruta de acceso LIB al buscar un objeto, una biblioteca u otro archivo especificado en la línea de comandos o por la opción /BASE. También usa esta ruta para buscar un archivo .pdb denominado en un objeto. La variable LIB puede contener una o varias especificaciones de ruta de acceso, separadas por punto y coma. Una ruta de acceso debe apuntar al subdirectorio \lib de la instalación de Visual C++.

  • PATH, si la herramienta debe ejecutar CVTRES y no encuentra el archivo en el mismo directorio de la propia LINK. (LINK requiere CVTRES para vincular un archivo. res). PATH debe apuntar al subdirectorio \bin de la instalación de Visual C++.

  • TMP, para especificar un directorio al vincular archivos .res u OMF.

Vea también

C/C++ Building ReferenceMSVC Linker OptionsModule-Definition (.def) FilesLinker Support for Delay-Loaded DLLs