【发布时间】:2015-07-11 06:26:31
【问题描述】:
昨天,我安装了Visual Studio 2015 RC Community Edition。作为第一个测试,我尝试从源代码构建 GVim。
我使用"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 include=%include%;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include
所以Make_mvc.mak 获取Win32.mak 文件。另外,我设置:
set MSVCVER=12.0
因为make file 此时未检测到新的 Visual Studio 版本。
在这之后,我有:
Framework40Version=v4.0 FrameworkDir=C:\Windows\Microsoft.NET\Framework64 FrameworkDIR64=C:\Windows\Microsoft.NET\Framework64 框架版本=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 平台=X64 PROCESSOR_ARCHITECTURE=AMD64 UniversalCRTSdkDir=C:\Program Files (x86)\Windows Kits\10\ VCINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ 视觉工作室版本=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\
我能够构建一个简单的程序:
C:\...\Temp> 输入 t.c
#包括
诠释主要(无效){
printf("你好 %s\n", "Stackoverflow.com");
返回0;
}
C:\...\Temp> cl t.c
Microsoft (R) C/C++ 优化编译器版本 19.00.22816 for x64
版权所有 (C) 微软公司。版权所有。
t.c
Microsoft (R) 增量链接器版本 14.00.22816.0
版权所有 (C) 微软公司。版权所有。
/out:t.exe
t.obj
C:\...\Temp> t.exe
你好 Stackoverflow.com
但是,当我发出构建 GVim 的命令(与 Visual Studio 2013 CE 工具配合使用的东西)时,编译正常,但出现以下链接错误:
C:\...\vim\src> nmake -f Make_mvc.mak CPU=AMD64 OPTIMIZE=SPACE GETTEXT=no NETBEANS=no CSCOPE=no DIRECTX=yes GUI=yes
我正在剪掉大部分错误消息,因为它们有很多:
gui_dwrite.obj : 错误 LNK2001: 无法解析的外部符号 memcmp blowfish.obj : 错误 LNK2001: 无法解析的外部符号 memcmp crypt.obj:错误 LNK2001:未解析的外部符号 memcmp sha256.obj : 错误 LNK2001: 无法解析的外部符号 memcmp undo.obj:错误 LNK2001:未解析的外部符号 memcmp blowfish.obj:错误 LNK2019:函数 bf_e_cblock 中引用的未解析的外部符号 memcpy winclip.obj:错误 LNK2001:未解析的外部符号 memcpy screen.obj:错误 LNK2001:无法解析的外部符号 memcpy sha256.obj:错误 LNK2001:未解析的外部符号 memcpy gui.obj : 错误 LNK2001: 无法解析的外部符号 memmove gui_w32.obj : 错误 LNK2001: 无法解析的外部符号 memmove tag.obj : 错误 LNK2001: 无法解析的外部符号 memmove term.obj:错误 LNK2001:未解析的外部符号 memmove ui.obj:错误 LNK2001:无法解析的外部符号 memmove undo.obj:错误 LNK2001:未解析的外部符号 memmove screen.obj : 错误 LNK2001: 无法解析的外部符号 memmove search.obj:错误 LNK2001:未解析的外部符号 memmove spell.obj : 错误 LNK2001: 无法解析的外部符号 memmove syntax.obj:错误 LNK2001:无法解析的外部符号 memmove os_mswin.obj:错误 LNK2001:无法解析的外部符号 memmove os_win32.obj:错误 LNK2001:无法解析的外部符号 memmove quickfix.obj:错误 LNK2001:无法解析的外部符号 memmove regexp.obj:错误 LNK2001:未解析的外部符号 memmove misc2.obj:错误 LNK2001:未解析的外部符号 memmove normal.obj:错误 LNK2001:未解析的外部符号 memmove ops.obj:错误 LNK2001:无法解析的外部符号 memmove option.obj:错误 LNK2001:无法解析的外部符号 memmove memline.obj:错误 LNK2001:无法解析的外部符号 memmove menu.obj:错误 LNK2001:无法解析的外部符号 memmove message.obj:错误 LNK2001:未解析的外部符号 memmove misc1.obj:错误 LNK2001:未解析的外部符号 memmove getchar.obj:错误 LNK2001:未解析的外部符号 memmove hashtab.obj:错误 LNK2001:无法解析的外部符号 memmove mark.obj:错误 LNK2001:无法解析的外部符号 memmove ... misc2.obj:错误 LNK2001:未解析的外部符号 fwrite spell.obj : 错误 LNK2001: 无法解析的外部符号 fwrite edit.obj:错误 LNK2019:函数 ins_ctrl_ey 中引用的未解析的外部符号 isalnum regexp.obj:错误 LNK2001:未解析的外部符号 isalnum ui.obj:错误 LNK2001:未解析的外部符号 strncpy gui_w32.obj:错误 LNK2001:未解析的外部符号 strncpy libXpm.lib(parse.obj):错误 LNK2001:未解析的外部符号 strncpy libXpm.lib(data.obj):错误 LNK2001:未解析的外部符号 strncpy regexp.obj:错误 LNK2001:未解析的外部符号 strncpy screen.obj:错误 LNK2001:未解析的外部符号 strncpy ... main.obj:错误 LNK2001:未解析的外部符号关闭 memfile.obj:错误 LNK2001:未解析的外部符号关闭 libXpm.lib(parse.obj) : error LNK2001: unresolved external symbol free libXpm.lib(hashtab.obj):错误 LNK2001:未解析的外部符号免费 libXpm.lib(data.obj):错误 LNK2001:未解析的外部符号免费 libXpm.lib(misc.obj):错误 LNK2001:未解析的外部符号免费 ... eval.obj : error LNK2001: unresolved external symbol free misc2.obj:错误 LNK2001:未解析的外部符号免费 os_win32.obj:错误 LNK2001:未解析的外部符号免费 gui_w32.obj:错误 LNK2001:未解析的外部符号免费 libcmt.lib(new_scalar.obj):错误 LNK2001:未解析的外部符号 malloc libXpm.lib(simx.obj):错误 LNK2001:无法解析的外部符号 malloc eval.obj:错误 LNK2001:未解析的外部符号 malloc misc2.obj:错误 LNK2001:未解析的外部符号 malloc os_win32.obj:错误 LNK2001:未解析的外部符号 malloc gui_w32.obj:错误 LNK2001:未解析的外部符号 malloc normal.obj:错误 LNK2001:未解析的外部符号 realloc regexp.obj:错误 LNK2001:未解析的外部符号 realloc libXpm.lib(simx.obj) : 错误 LNK2001: 无法解析的外部符号 realloc eval.obj:错误 LNK2001:未解析的外部符号 realloc memline.obj:错误 LNK2001:未解析的外部符号重新分配 misc1.obj:错误 LNK2001:未解析的外部符号 realloc misc2.obj:错误 LNK2001:未解析的外部符号 realloc ... ex_docmd.obj:错误 LNK2001:未解析的外部符号 stricmp ops.obj:错误 LNK2001:无法解析的外部符号 __stdio_common_vfprintf option.obj:错误 LNK2001:无法解析的外部符号 __stdio_common_vfprintf search.obj:错误 LNK2001:无法解析的外部符号 __stdio_common_vfprintf spell.obj : 错误 LNK2001: 无法解析的外部符号 __stdio_common_vfprintf fold.obj:错误 LNK2001:未解析的外部符号 __stdio_common_vfprintf getchar.obj:错误 LNK2001:无法解析的外部符号 __stdio_common_vfprintf main.obj:错误 LNK2001:无法解析的外部符号 __stdio_common_vfprintf mark.obj:错误 LNK2001:无法解析的外部符号 __stdio_common_vfprintf eval.obj:错误 LNK2001:无法解析的外部符号 __stdio_common_vfprintf ex_cmds.obj:错误 LNK2001:无法解析的外部符号 __stdio_common_vfprintf ex_docmd.obj:错误 LNK2001:无法解析的外部符号 __stdio_common_vfprintf ex_getln.obj:错误 LNK2001:未解析的外部符号 __stdio_common_vfprintf window.obj:错误 LNK2001:无法解析的外部符号 __stdio_common_vsprintf gui.obj:错误 LNK2001:未解析的外部符号 __stdio_common_vsprintf gui_w32.obj : 错误 LNK2001: 无法解析的外部符号 __stdio_common_vsprintf version.obj:错误 LNK2001:无法解析的外部符号 __stdio_common_vsprintf spell.obj : 错误 LNK2001: 无法解析的外部符号 __stdio_common_vsprintf syntax.obj:错误 LNK2001:无法解析的外部符号 __stdio_common_vsprintf tag.obj:错误 LNK2001:无法解析的外部符号 __stdio_common_vsprintf term.obj:错误 LNK2001:无法解析的外部符号 __stdio_common_vsprintf regexp.obj:错误 LNK2001:未解析的外部符号 __stdio_common_vsprintf screen.obj:错误 LNK2001:无法解析的外部符号 __stdio_common_vsprintf search.obj:错误 LNK2001:无法解析的外部符号 __stdio_common_vsprintf sha256.obj:错误 LNK2001:未解析的外部符号 __stdio_common_vsprintf ops.obj:错误 LNK2001:未解析的外部符号 __stdio_common_vsprintf option.obj:错误 LNK2001:无法解析的外部符号 __stdio_common_vsprintf ... 函数 _onexit 中引用的 _crt_atexit libcmt.lib(utility.obj):错误 LNK2019:未解析的外部符号 _crt_at_quick_exit 在函数 at_quick_exit 中引用 libcmt.lib(utility.obj):错误 LNK2019:未解析的外部符号 _cexit 在函数 __scrt_dllmain_uninitialize_c 中引用 libcmt.lib(exe_winmain.obj):错误 LNK2001:无法解析的外部符号 _cexit libcmt.lib(new_scalar.obj):错误 LNK2019:函数“void * __cdecl operator new(unsigned __int64)”(??2@YAPEAX_K@Z) 中引用的未解析外部符号 _callnewh libcmt.lib(exe_winmain.obj):错误 LNK2019:未解析的外部符号 _seh_filter_exe 在函数“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):错误 LNK2019:函数“int __cdecl pre_c_initialization(void)”中引用的未解析外部符号 _set_app_type (?pre_c_initialization@@YAHXZ) libcmt.lib(exe_winmain.obj):错误 LNK2019:函数“int __cdecl pre_c_initialization(void)”中引用的未解析的外部符号 __setusermatherr (?pre_c_initialization@@YAHXZ) libcmt.lib(exe_winmain.obj):错误LNK2019:函数“int __cdecl pre_c_initialization(void)”(?pre_c_initialization@@YAHXZ)中引用的未解析的外部符号_configure_narrow_argv libcmt.lib(exe_winmain.obj):错误 LNK2019:函数“int __cdecl __scrt_common_main_seh(void)”中引用的未解析的外部符号 _get_narrow_winmain_command_line (?__scrt_common_main_seh@@YAHXZ) libcmt.lib(exe_winmain.obj):错误 LNK2019:函数“int __cdecl __scrt_common_main_seh(void)”中引用的未解析外部符号 _initterm (?__scrt_common_main_seh@@YAHXZ) ... libXpm.lib(rgb.obj):错误 LNK2019:函数 xpmGetRGBfromName 中引用的未解析的外部符号 strdup oldnames.lib(strdup.obj):错误 LNK2001:未解析的外部符号 strdup oldnames.lib(strdup.obj):错误 LNK2001:未解析的外部符号 _strdup gvim.exe : 致命错误 LNK1120: 183 unresolved externals
我觉得我错过了一些明显的东西。 VS 2013 和 VS 2015 之间有什么变化?
【问题讨论】:
标签: c windows visual-studio vim visual-studio-2015