Hi again again,
I’m trying to build my compiler frontend in C++ on Windows 7 x64 using clang++.exe. I want to use clang++ for my project so that I get a feel for how mature and usable the Windows support is as I gradually get up to speed with LLVM for Windows. I could develop on Linux, but I need the Windows support so I figure I might as well do it the hard way.
My code is fairly simple C++ with a few template classes, a rare virtual function, and nothing very fancy. I am able to compile my code without warnings (although clang++ earlier on found a couple of very serious issues in my code). But when I get to the link phase, all hell breaks loose:
I get a ton of these warnings:
Memory.o : warning LNK4006: _InterlockedBitTestAndSet already defined in Stream.o; second definition ignored Memory.o : warning LNK4006: _InterlockedBitTestAndReset already defined in Stream.o; second definition ignored Memory.o : warning LNK4006: _InterlockedBitTestAndComplement already defined in Stream.o; second definition ignored Memory.o : warning LNK4006: _MemoryBarrier already defined in Stream.o; second definition ignored Memory.o : warning LNK4006: _ReadPMC already defined in Stream.o; second definition ignored
I don’t use InterlockedBitTestAndSet anywhere in my code and the same goes for the rest of the symbols that are being warned about.
After that, I get a ton of errors form the linker because it complains about the above symbols already being defined.
I also get a few errors like this:
Bitset_test-423377.o : error LNK2001: unresolved external symbol __ZTVN10__cxxabiv120__si_class_type_infoE
Any ideas? Is the Windows support simply not mature enought for real use or am I doing something wrong? I invoke the linker through clang++ by giving the input object files and a library that must be linked against, made with Microsoft’s LIB tool. I use Microsoft LIB because LINK rejects libraries created using llvm-ar.
I only use the -c, -o, -v, and -D options to clang++.exe and nothing else. Nothing advanced yet.
Is it that clang++/Windows simply don’t support the use of libraries yet? The hello world example works great, but I do aspire to more than that.
If I have missed an important note in the documentation, then I apologize greatly in advance.