so there is something that really bothers me. In the past I build LLVM and Clang via the source code and Visual Studio 2015.
In my project I used then the freshly new build Clang and the LLVM.
But now, since I compiled with Visual Studio 2017 this is not possible anymore. I’m able to compile both, the LLVM and clang, but when I then use clang as the compiler and the LLVM in my project, I get undefined references to: “__std_reverse_trivially_swappable_4”
And other functions like this.
I also tried, when CMake has generated the Solution file, to change the compiler to LLVM. Clang is executed then, but still – the same error will occur in my project or different projects when they are compiled with Clang.
What am I doing wrong? It prevents me from continuing my project…
But building the LLVM and Clang is no problem at all.
The problem occurs when I use the generated LLVM lib files in a project, which I compile with Clang.
I do the same steps as you do! The resulting Clang compiler is indeed working. I have problems with the LLVM library.
When I build the LLVM7 I use the libraries of it in a different project - a JIT client.
When I compile this solution with Visual Studio 2017 and the MSVC compiler, then I get no problems.
But, when I switch to the Clang-cl compiler in Visual Studio 2017, then I get suddenly these undefined references.
The strange thing is, that this also happens when I compile the LLVM with a preinstalled Clang.
Were you able to figure this out or is it still broken for you?
Our scenario is a little bit different, but I have a theory as to what may be going wrong. What linker are you using when you compile your project with clang-cl? I am wondering whether the version of the linker and/or the libraries that you are using is too old in comparison to the one used for the clang compilation.
Sorry, didn't notice this thread earlier. In January I had a similar
issue with LLVM 3.8 on Window 10. I couldn't solve it, but my workaround
at least unblocked development: I simply defined an external C function
with that exact name myself Something like:
With that the linker was happy. I put an explicit breakpoint instruction
in there and it was never actually hit. In case you want to investigate
further, there are more people with this problem here: https://github.com/protocolbuffers/protobuf/issues/4129
I actually worked around the problem by installing the LLVM plug-in for Visual Studio - now I was able to successfully link the LLVM libraries in projects where I used clang as the compiler.
As a linker I always used the MSVC linker - for building LLVM/Clang and the said project.