2012-12-29 32 views
0

我正在使用用Clang构建的对象文件。但无论我传递给ld.exe的库参数如何,它似乎总是回吐未解决的引用,例如memcpy,标准库,东西以及像_cxa_atexit这样的实现东西。我需要使用MinGW与Clang构建的目标文件链接哪些库?

我需要传递给MinGW链接器来将它链接到可执行文件中的库文件(以什么顺序?)?

编辑:

我改变了三倍,从“为i686-PC-MinGW的”到“的i686-PC-mingw32的”,它解决了大部分的problems-锵的确实的“老把戏D3D9失败默默地当输入显然是错误的,输出无法正确输入“。但是我剩下的只有两个未解决的外部问题 - 和doublestd::_Hash_impl,没有任何变化。该计划只是“你好,世界!”。奇怪的是,clang ++。exe和g ++。exe在编译源代码时都没有问题,但是如果我使用Clang C++ API将它编译为.o,然后将它传回MinGW,我会得到未解析的外部代码。

+1

你为什么不让叮当做链接的任何具体原因? (或者可能是g ++,不知道目标文件是否兼容。)在Windows上不可用? – Mat

+0

因为我需要使用Clang C++ API,所以我必须自己做。 – Puppy

+0

(我不明白这是如何阻止你使用clang ++来链接,但我从来没有这样做过。)你有没有尝试用'clang ++ -v foo.cpp'构建一个虚拟的C++源代码并使用/调整链接器调用显示? – Mat

回答

2

通常,在构建二进制文件时使用不同的工具链并不是一个好主意。完全有可能不同的工具对符号名称的想法不匹配。

尽管如此,试图回答您的实际quesiton:

-lstdc将是一个最起码的要求和-lstdc++如果它的C++代码。不知道你的代码是做什么的,不可能说你是否需要更多的代码。

+0

我尝试过,但没有效果。 – Puppy

+0

你究竟做了什么? –

+0

g ++ -lstdC++ foo.obj,对于ld类似,但仍然是一大堆未解决的外部数据。 – Puppy

相关问题