2011-01-15 20 views
11

Estoy tratando de compilar un .DLL para una aplicación llamada sierra chart.El archivo de propiedades del archivo de enlace del enlazador no coincide con el trayecto de destino?

Aquí es la advertencia de que llegue tengo que arreglar por lo que todos los puntos al valor de salida enlazador:

advertencia MSB8012: TargetPath (C: \ SierraChart \ VCProject \ Release \ SCStudies.dll) no coincide con el valor de propiedad OutputFile del vinculador (c: \ sierrachart \ data \ SCStudies.dll). Esto puede hacer que su proyecto genere incorrectamente. Para corregir esto, por favor asegúrese de que los valores de las propiedades $ (OutDir), $ (TargetName) y $ (TargetExt) coincidan con el valor especificado en % (Link.OutputFile). C: \ Archivos de programa (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ Microsoft.CppBuild.targets

¿Alguna idea?

+0

Ha intentado seguir los pasos sugeridos en la advertencia: "Para corregir esto, asegúrese de que $ (OutDir), $ (TargetName) y $ (TargetExt) valores de propiedad coincide con el valor especificado en% (Link.OutputFile). " –

+0

Para ser sincero, no estoy seguro de cómo hacerlo. Soy un poco nuevo para adjuntar Visual Studio a los procesos y con C++. – Yoshi9143

+0

Ver: http://stackoverflow.com/questions/16876429/how-do-i-fix-warning-msb8012-in-a-static-library-project-in-visual-c-2010 –

Respuesta

8

Creo que esta advertencia aparece específicamente cuando se actualiza un proyecto de C++ para VS2010. Visual Studio 2010 C++ Project Upgrade Guide describe algunas de las advertencias encontradas durante una actualización. Si no se siente cómodo al cambiar la configuración del proyecto, puede ser útil conservar la versión anterior de Visual Studio.

Para cambiar %(Link.OutputFile), abra las propiedades del proyecto. Vaya a Propiedades de configuración -> Enlazador -> General. Puede establecer el archivo de salida en $(OutDir)\SCStudies.dll, que debe encargarse de su problema. Es posible que deba repetir el cambio para cada configuración/sabor que vaya a generar (Debug/x86, Release/x86, Debug/Itanium, etc.).

1

La configuración original se estableció como:

Propiedades -> Enlazador -> General: $(OutDir)\"<'name fileA>".exe

El programa intenta ejecutar "<'name_project>" .exe y, como consecuencia de errores Vinculado.

Es necesario que ajuste la configuración como:

Propiedades -> Linker -> General: $(OutDir)\"<'project name>".exe

6

Sobre la base de esta answer.

me cambió la siguiente propiedad:

Enlazador -> General -> Archivo de salida a "$ (OutDir) $ (targetName) $ (TargetExt)"

Esto impidió que el aviso para aparecer y la salida se generó con éxito.

1

Una solución diferente que otros no han mencionado es que, de forma predeterminada, TargetExt es .exe y para mis compilaciones de depuración lo cambié para ser _d.exe, donde en cambio debería hacerlo en la ruta TargetName.

0

El directorio especificado en General-> Directorio de salida y el directorio especificado en la ruta en Linker-> Output File deben coincidir.

Si desea cambiar los valores predeterminados, realice las siguientes tareas en este orden: Primero configure el OutDir en General-> Directorio de salida. P.ej.

$(SolutionDir)$(Platform)\$(Configuration)\MyProgram\ 

Asegúrese de que el archivo de salida sea coherente. P.ej. esto funcionaría

$(OutDir)\$(TargetName)$(TargetExt) 
0

El comentario de Gerardo Hernandez me ayudó.

El directorio especificado en General-> Directorio de salida y el directorio especificado en la ruta en Linker-> Output File deben coincidir.

En mi caso yo estaba importando un gran proyecto de Visual Studio 6 y

C:\Project\myproject\OneOfMyDlls\.\Debug\OneOfMyDlls.dll

no era igual a

C:\Project\myproject\Debug\OneOfMyDlls.dll

pero

C:\Project\myproject\OneOfMyDlls\..\Debug\OneOfMyDlls.dll

habría sido, después de la reducción de ruta.

El problema era que el Visual Studio 2017 de importaciones había cambiado el directorio de salida de ..\Debug a .\Debug suponiendo que el uso no convencional directorio padre fue un error. En un proyecto grande con 13 archivos DLL propios, (no importa las DLL de segundo y tercero también), tiene sentido recopilar todas las DLL en un solo lugar y ..\Debug era correcto.

Así, mientras que otros podrían haber tenido que cambiar Linker->Output File, en mi caso fue General->Output Directory que fue necesario cambiar, ya que había sido corrompido por la importación de Visual Studio 6.

Algo así como ..\Debug se había convertido en algo así como después de .\Debug importar. (Se han eliminado los nombres específicos del proyecto real)

Cuestiones relacionadas