usar - ¿Por qué no puedo crear Vim con las herramientas de línea de comandos de Visual Studio 2015 RC?
visual studio code (1)
Resulta que esto ya se había informado en la lista de correo vim_dev , y se debe a la reorganización del tiempo de ejecución de C.
Específicamente, la opción /nodefaultlib
para el enlazador parece causar el problema.
El parche incluido en el seguimiento de Paul Moore funcionó para mí.
La biblioteca XPM precompilada incluida con Vim parece enlazar estáticamente a MSVCRT. Este problema se menciona en las características de la biblioteca CRT :
Si tiene más de un DLL o EXE, entonces puede tener más de un CRT, ya sea que esté usando o no versiones diferentes de Visual C ++. Por ejemplo, vincular estáticamente el CRT en múltiples DLL puede presentar el mismo problema. Los desarrolladores que encuentran este problema con CRT estáticos han recibido instrucciones de compilar con
/MD
para usar la DLL de CRT. Ahora que se ha cambiado el nombre de la DLL de CRT amsvcr110.dll
, las aplicaciones pueden tener algunos componentes vinculados amsvcrt.dll
y otros amsvcr110.dll
. Si sus archivos DLL pasan recursos CRT a través del límitemsvcrt.dll
ymsvcr110.dll
, encontrará problemas con los CRT no coincidentes y deberá recompilar su proyecto con Visual C ++.
No he intentado volver a compilar la biblioteca XPM incluida con VS2015, por lo que la compatibilidad con XPM está desactivada en mi GVim por ahora.
Ayer, instalé Visual Studio 2015 RC Community Edition . Como primera prueba, intenté construir GVim desde la fuente.
Abrí una ventana de comando usando "C:/ProgramData/Microsoft/Windows/Start Menu/Programs/Visual Studio 2015/Visual Studio Tools/Windows Desktop Command Prompts/VS2015 x64 Native Tools Command Prompt.lnk"
, set
set include=%include%;C:/Program Files (x86)/Microsoft SDKs/Windows/v7.1A/Include
entonces Make_mvc.mak
toma el archivo Win32.mak
. Además, configuré:
set MSVCVER=12.0
ya que el archivo make no detecta la nueva versión de Visual Studio en este punto.
Después de esto, tengo:
Framework40Version=v4.0 FrameworkDir=C:/Windows/Microsoft.NET/Framework64 FrameworkDIR64=C:/Windows/Microsoft.NET/Framework64 FrameworkVersion=v4.0.30319 FrameworkVersion64=v4.0.30319 FSHARPINSTALLDIR=C:/Program Files (x86)/Microsoft SDKs/F#/4.0/Framework/v4.0/ INCLUDE=C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/INCLUDE;C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/ATLMFC/INCLUDE;C:/Program Files (x86)/Windows Kits/10//include/10.0.10056.0/ucrt;C:/Program Files (x86)/Windows Kits/8.1/include/shared;C:/Program Files (x86)/Windows Kits/8.1/include/um;C:/Program Files (x86)/Windows Kits/8.1/include/winrt;;C:/Program Files (x86)/Microsoft SDKs/Windows/v7.1A/Include LIB=C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/LIB/amd64;C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/ATLMFC/LIB/amd64;C:/Program Files (x86)/Windows Kits/10//lib/10.0.10056.0/ucrt/x64;C:/Program Files (x86)/Windows Kits/8.1/lib/winv6.3/um/x64; LIBPATH=C:/Windows/Microsoft.NET/Framework64/v4.0.30319;C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/LIB/amd64;C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/ATLMFC/LIB/amd64;C:/Program Files (x86)/Windows Kits/8.1/References/CommonConfiguration/Neutral;/Microsoft.VCLibs/14.0/References/CommonConfiguration/neutral; MSVCVER=12.0 Platform=X64 PROCESSOR_ARCHITECTURE=AMD64 UniversalCRTSdkDir=C:/Program Files (x86)/Windows Kits/10/ VCINSTALLDIR=C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/ VisualStudioVersion=14.0 VS100COMNTOOLS=C:/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/Tools/ VS110COMNTOOLS=C:/Program Files (x86)/Microsoft Visual Studio 11.0/Common7/Tools/ VS120COMNTOOLS=C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/Tools/ VS140COMNTOOLS=C:/Program Files (x86)/Microsoft Visual Studio 14.0/Common7/Tools/ VSINSTALLDIR=C:/Program Files (x86)/Microsoft Visual Studio 14.0/ windir=C:/Windows WindowsSdkDir=C:/Program Files (x86)/Windows Kits/8.1/ WindowsSDK_ExecutablePath_x64=C:/Program Files (x86)/Microsoft SDKs/Windows/v8.1A/bin/NETFX 4.5.1 Tools/x64/ WindowsSDK_ExecutablePath_x86=C:/Program Files (x86)/Microsoft SDKs/Windows/v8.1A/bin/NETFX 4.5.1 Tools/
Puedo construir un programa simple:
C:/.../Temp> type t.c #include int main(void) { printf("Hello %s/n", "Stackoverflow.com"); return 0; } C:/.../Temp> cl t.c Microsoft (R) C/C++ Optimizing Compiler Version 19.00.22816 for x64 Copyright (C) Microsoft Corporation. All rights reserved. t.c Microsoft (R) Incremental Linker Version 14.00.22816.0 Copyright (C) Microsoft Corporation. All rights reserved. /out:t.exe t.obj C:/.../Temp> t.exe Hello Stackoverflow.com
Sin embargo, cuando ejecuto el comando para compilar mi GVim (algo que funciona bien con las herramientas de Visual Studio 2013 CE), la compilación va bien, pero obtengo los siguientes errores de enlace:
C:/.../vim/src> nmake -f Make_mvc.mak CPU=AMD64 OPTIMIZE=SPACE GETTEXT=no NETBEANS=no CSCOPE=no DIRECTX=yes GUI=yes
Estoy recortando la mayoría de los mensajes de error porque hay muchos de ellos:
gui_dwrite.obj : error LNK2001: unresolved external symbol memcmp blowfish.obj : error LNK2001: unresolved external symbol memcmp crypt.obj : error LNK2001: unresolved external symbol memcmp sha256.obj : error LNK2001: unresolved external symbol memcmp undo.obj : error LNK2001: unresolved external symbol memcmp blowfish.obj : error LNK2019: unresolved external symbol memcpy referenced in function bf_e_cblock winclip.obj : error LNK2001: unresolved external symbol memcpy screen.obj : error LNK2001: unresolved external symbol memcpy sha256.obj : error LNK2001: unresolved external symbol memcpy gui.obj : error LNK2001: unresolved external symbol memmove gui_w32.obj : error LNK2001: unresolved external symbol memmove tag.obj : error LNK2001: unresolved external symbol memmove term.obj : error LNK2001: unresolved external symbol memmove ui.obj : error LNK2001: unresolved external symbol memmove undo.obj : error LNK2001: unresolved external symbol memmove screen.obj : error LNK2001: unresolved external symbol memmove search.obj : error LNK2001: unresolved external symbol memmove spell.obj : error LNK2001: unresolved external symbol memmove syntax.obj : error LNK2001: unresolved external symbol memmove os_mswin.obj : error LNK2001: unresolved external symbol memmove os_win32.obj : error LNK2001: unresolved external symbol memmove quickfix.obj : error LNK2001: unresolved external symbol memmove regexp.obj : error LNK2001: unresolved external symbol memmove misc2.obj : error LNK2001: unresolved external symbol memmove normal.obj : error LNK2001: unresolved external symbol memmove ops.obj : error LNK2001: unresolved external symbol memmove option.obj : error LNK2001: unresolved external symbol memmove memline.obj : error LNK2001: unresolved external symbol memmove menu.obj : error LNK2001: unresolved external symbol memmove message.obj : error LNK2001: unresolved external symbol memmove misc1.obj : error LNK2001: unresolved external symbol memmove getchar.obj : error LNK2001: unresolved external symbol memmove hashtab.obj : error LNK2001: unresolved external symbol memmove mark.obj : error LNK2001: unresolved external symbol memmove ... misc2.obj : error LNK2001: unresolved external symbol fwrite spell.obj : error LNK2001: unresolved external symbol fwrite edit.obj : error LNK2019: unresolved external symbol isalnum referenced in function ins_ctrl_ey regexp.obj : error LNK2001: unresolved external symbol isalnum ui.obj : error LNK2001: unresolved external symbol strncpy gui_w32.obj : error LNK2001: unresolved external symbol strncpy libXpm.lib(parse.obj) : error LNK2001: unresolved external symbol strncpy libXpm.lib(data.obj) : error LNK2001: unresolved external symbol strncpy regexp.obj : error LNK2001: unresolved external symbol strncpy screen.obj : error LNK2001: unresolved external symbol strncpy ... main.obj : error LNK2001: unresolved external symbol close memfile.obj : error LNK2001: unresolved external symbol close libXpm.lib(parse.obj) : error LNK2001: unresolved external symbol free libXpm.lib(hashtab.obj) : error LNK2001: unresolved external symbol free libXpm.lib(data.obj) : error LNK2001: unresolved external symbol free libXpm.lib(misc.obj) : error LNK2001: unresolved external symbol free ... eval.obj : error LNK2001: unresolved external symbol free misc2.obj : error LNK2001: unresolved external symbol free os_win32.obj : error LNK2001: unresolved external symbol free gui_w32.obj : error LNK2001: unresolved external symbol free libcmt.lib(new_scalar.obj) : error LNK2001: unresolved external symbol malloc libXpm.lib(simx.obj) : error LNK2001: unresolved external symbol malloc eval.obj : error LNK2001: unresolved external symbol malloc misc2.obj : error LNK2001: unresolved external symbol malloc os_win32.obj : error LNK2001: unresolved external symbol malloc gui_w32.obj : error LNK2001: unresolved external symbol malloc normal.obj : error LNK2001: unresolved external symbol realloc regexp.obj : error LNK2001: unresolved external symbol realloc libXpm.lib(simx.obj) : error LNK2001: unresolved external symbol realloc eval.obj : error LNK2001: unresolved external symbol realloc memline.obj : error LNK2001: unresolved external symbol realloc misc1.obj : error LNK2001: unresolved external symbol realloc misc2.obj : error LNK2001: unresolved external symbol realloc ... ex_docmd.obj : error LNK2001: unresolved external symbol stricmp ops.obj : error LNK2001: unresolved external symbol __stdio_common_vfprintf option.obj : error LNK2001: unresolved external symbol __stdio_common_vfprintf search.obj : error LNK2001: unresolved external symbol __stdio_common_vfprintf spell.obj : error LNK2001: unresolved external symbol __stdio_common_vfprintf fold.obj : error LNK2001: unresolved external symbol __stdio_common_vfprintf getchar.obj : error LNK2001: unresolved external symbol __stdio_common_vfprintf main.obj : error LNK2001: unresolved external symbol __stdio_common_vfprintf mark.obj : error LNK2001: unresolved external symbol __stdio_common_vfprintf eval.obj : error LNK2001: unresolved external symbol __stdio_common_vfprintf ex_cmds.obj : error LNK2001: unresolved external symbol __stdio_common_vfprintf ex_docmd.obj : error LNK2001: unresolved external symbol __stdio_common_vfprintf ex_getln.obj : error LNK2001: unresolved external symbol __stdio_common_vfprintf window.obj : error LNK2001: unresolved external symbol __stdio_common_vsprintf gui.obj : error LNK2001: unresolved external symbol __stdio_common_vsprintf gui_w32.obj : error LNK2001: unresolved external symbol __stdio_common_vsprintf version.obj : error LNK2001: unresolved external symbol __stdio_common_vsprintf spell.obj : error LNK2001: unresolved external symbol __stdio_common_vsprintf syntax.obj : error LNK2001: unresolved external symbol __stdio_common_vsprintf tag.obj : error LNK2001: unresolved external symbol __stdio_common_vsprintf term.obj : error LNK2001: unresolved external symbol __stdio_common_vsprintf regexp.obj : error LNK2001: unresolved external symbol __stdio_common_vsprintf screen.obj : error LNK2001: unresolved external symbol __stdio_common_vsprintf search.obj : error LNK2001: unresolved external symbol __stdio_common_vsprintf sha256.obj : error LNK2001: unresolved external symbol __stdio_common_vsprintf ops.obj : error LNK2001: unresolved external symbol __stdio_common_vsprintf option.obj : error LNK2001: unresolved external symbol __stdio_common_vsprintf ... _crt_atexit referenced in function _onexit libcmt.lib(utility.obj) : error LNK2019: unresolved external symbol _crt_at_quick_exit referenced in function at_quick_exit libcmt.lib(utility.obj) : error LNK2019: unresolved external symbol _cexit referenced in function __scrt_dllmain_uninitialize_c libcmt.lib(exe_winmain.obj) : error LNK2001: unresolved external symbol _cexit libcmt.lib(new_scalar.obj) : error LNK2019: unresolved external symbol _callnewh referenced in function "void * __cdecl operator new(unsigned __int64)" (??2@YAPEAX_K@Z) libcmt.lib(exe_winmain.obj) : error LNK2019: unresolved external symbol _seh_filter_exe referenced in function "int `int __cdecl __scrt_common_main_seh(void)''::`1''::filt$0" (?filt$0@?0??__scrt_common_main_seh@@YAHXZ@4HA) libcmt.lib(exe_winmain.obj) : error LNK2019: unresolved external symbol _set_app_type referenced in function "int __cdecl pre_c_initialization(void)" (?pre_c_initialization@@YAHXZ) libcmt.lib(exe_winmain.obj) : error LNK2019: unresolved external symbol __setusermatherr referenced in function "int __cdecl pre_c_initialization(void)" (?pre_c_initialization@@YAHXZ) libcmt.lib(exe_winmain.obj) : error LNK2019: unresolved external symbol _configure_narrow_argv referenced in function "int __cdecl pre_c_initialization(void)" (?pre_c_initialization@@YAHXZ) libcmt.lib(exe_winmain.obj) : error LNK2019: unresolved external symbol _get_narrow_winmain_command_line referenced in function "int __cdecl __scrt_common_main_seh(void)" (?__scrt_common_main_seh@@YAHXZ) libcmt.lib(exe_winmain.obj) : error LNK2019: unresolved external symbol _initterm referenced in function "int __cdecl __scrt_common_main_seh(void)" (?__scrt_common_main_seh@@YAHXZ) ... libXpm.lib(rgb.obj) : error LNK2019: unresolved external symbol strdup referenced in function xpmGetRGBfromName oldnames.lib(strdup.obj) : error LNK2001: unresolved external symbol strdup oldnames.lib(strdup.obj) : error LNK2001: unresolved external symbol _strdup gvim.exe : fatal error LNK1120: 183 unresolved externals
Siento que me falta algo obvio. ¿Qué cambió entre VS 2013 y VS 2015?