gpt4 book ai didi

c++ - Windows10 上的 LLD 链接错误 : no input files when trying to link with libcmt. lib

转载 作者:行者123 更新时间:2023-11-28 04:04:02 25 4
gpt4 key购买 nike

我正在编译一个非常简单的main.c:

int myfunc(int x, int y){
return x + y;
}

int main(){
int res = myfunc(2,2);

return;
}

我正在使用以下选项进行编译:

clang.exe -std=c11 -g -c .\main.c

我将 main.o 作为输出。现在,我使用带有以下选项的 lld-link.exe 进行链接:

lld-link.exe -defaultlib:libcmt -libpath:"C:\Program Files (x86)\Windows Kits\10\Lib\10.0.18362.0\um\x64\" .\main.o

我收到以下错误:lld-link: error: no input files

但很明显 main.o 作为最后一个参数,它应该是您放置输入文件的地方。另请记住,我必须再次链接 libcmt.lib 才能获取 mainCRTStartup 函数的符号。

最佳答案

这似乎是由您的 libpath 参数中的尾部反斜杠触发的。我认为这实际上是由于 Windows cmd 引用的工作方式,而不是由于任何 lld 特定问题。

由于 libpath 参数以 x64\" 结尾,结束引号被解释为转义文字引号,因此 .\main.o 被解释为libpath 参数,并尝试运行命令,即使引用的字符串没有匹配的结束引号。(在 stackoverflow 上,语法突出显示实际上以相同的方式解释它。)

要么将结束引号前的反斜杠更改为双反斜杠,要么从该选项中删除结尾的反斜杠。

https://devblogs.microsoft.com/oldnewthing/?p=12833您可以找到对 Windows Shell 引用规则的更深入的解释。

修复了这个问题后,我仍然必须添加 -libpath:"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.23.28105\lib\x64"-libpath:"C:\Program Files (x86)\Windows Kits\10\Lib\10.0.18362.0\ucrt\x64" 让它实际找到 libcmt.lib(这是在 MSVC 下)和 libucrt.lib

(此外,由于 return; 在返回 int 的函数中,C 代码本身无法使用带有给定参数的 clang 为我编译,但这可能只是示例中的错字.)

关于c++ - Windows10 上的 LLD 链接错误 : no input files when trying to link with libcmt. lib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59043551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com