[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