[LLVMdev] Windows question: Dozens of linker warnings and errors
Mikael Lyngvig
mikael at lyngvig.org
Wed May 23 16:38:05 PDT 2012
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.
Sincerely,
Mikael Lyngvig
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120524/0580e537/attachment.html>
More information about the llvm-dev
mailing list