[cfe-dev] mincore.lib symbols in the link - how to avoid?

Russell Wallace via cfe-dev cfe-dev at lists.llvm.org
Mon Aug 7 08:52:21 PDT 2017


I'm trying to compile a program that is intended to use Clang as a library,
and getting an error where it tries to link in some symbols that are not
actually available.

Windows 7
Visual Studio 2017
LLVM 4.0.1
Everything 64-bit, and I built LLVM myself

// minimal test program
#include <clang/Frontend/CompilerInstance.h>
int main(int argc, char **argv) {
  clang::CompilerInstance ci;
  return 0;
}

cl /I\llvm\build\include /I\llvm\build\tools\clang\include /I\llvm\include
/I\llvm\tools\clang\include /J /MTd /Zi test.cpp \llvm\build\Debug\lib\*.lib

clangDriver.lib(MSVCToolChain.obj) : error LNK2019: unresolved external
symbol GetFileVersionInfoSizeW referenced in function "private: class
clang::VersionTuple __cdecl
clang::driver::toolchains::MSVCToolChain::getMSVCVersionFromExe(void)const
" (?getMSVCVersionFromExe at MSVCToolChain@toolchains at driver@clang@
@AEBA?AVVersionTuple at 4@XZ)
clangDriver.lib(MSVCToolChain.obj) : error LNK2019: unresolved external
symbol GetFileVersionInfoW referenced in function "private: class
clang::VersionTuple __cdecl
clang::driver::toolchains::MSVCToolChain::getMSVCVersionFromExe(void)const
" (?getMSVCVersionFromExe at MSVCToolChain@toolchains at driver@clang@
@AEBA?AVVersionTuple at 4@XZ)
clangDriver.lib(MSVCToolChain.obj) : error LNK2019: unresolved external
symbol VerQueryValueW referenced in function "private: class
clang::VersionTuple __cdecl
clang::driver::toolchains::MSVCToolChain::getMSVCVersionFromExe(void)const
" (?getMSVCVersionFromExe at MSVCToolChain@toolchains at driver@clang@
@AEBA?AVVersionTuple at 4@XZ)

These symbols are nominally available in mincore.lib, but not really;
adding that to the link, produces an executable that won't run without an
obscure DLL that is not present on many Windows machines, so it's necessary
to avoid bringing them in, in the first place.

clang.exe itself runs fine, which is presumably an existence proof that
this is possible.

Same problem arises with release build, and with a minimal library set
instead of *.lib.

What is the recommended way to solve this problem?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20170807/afc9057c/attachment.html>


More information about the cfe-dev mailing list