VC++ 标准库链接错误
VC++ Standard Library Link Error
我在使用 VC++ 编译器时遇到了问题。我已经安装了带有编译器、库和标头的 windows sdk,并尝试编译如下测试程序:
#include <cstdio>
int main(int argc, char* argv[]) {
printf("%s", "Hello world!");
return 0;
}
这是我用来编译的命令行脚本:
@echo off
set clpath=C:Program Files (x86)Microsoft Visual Studio 10.0VCbinamd64
set clname=cl.exe
set linkpath=C:Program Files (x86)Microsoft Visual Studio 10.0VCbinamd64
set linkname=link.exe
set libpath=/libpath:"C:Program FilesMicrosoft SDKsWindowsv7.1Lib" /libpath:"C:Program Files (x86)Microsoft Visual Studio 10.0VClib"
set includepath=/I "C:Program FilesMicrosoft SDKsWindowsv7.1Include" /I "C:Program Files (x86)Microsoft Visual Studio 10.0VCinclude"
set subsystem=console
set entry=main
set libfiles=
set cfiles=hello.cpp
set objfiles=hello.obj
set path=%clpath%
%clname% %includepath% /c %cfiles%
set path=%linkpath%
%linkname% %libpath% /subsystem:%subsystem% /entry:%entry% %libfiles% %objfiles%
这是输出:
Microsoft (R) C/C++ Optimizing Compiler Version 16.00.30319.01 for x64
Copyright (C) Microsoft Corporation. All rights reserved.
hello.cpp
Microsoft (R) Incremental Linker Version 10.00.30319.01
Copyright (C) Microsoft Corporation. All rights reserved.
hello.obj : error LNK2019: unresolved external symbol printf referenced in function main
hello.exe : fatal error LNK1120: 1 unresolved externals
只要我不尝试引用任何标准库函数,程序链接就可以了。我尝试弄乱 NODEFAULTLIB 和 DEFAULTLIB 开关,以及指定直接链接到的标准库,但无济于事。
您的库路径错误。 此文件夹:
C:Program Files (x86)Microsoft Visual Studio 10.0VClib
包含 x86 库。 您的目标是 amd64,因此您需要 amd64 库,来自:
C:Program Files (x86)Microsoft Visual Studio 10.0VClibamd64
(您还需要适用于 Windows SDK 的正确 amd64 库路径;我没有安装 v7.1,所以我不知道那是什么。
请注意,您只需运行以下命令即可使用所有正确的路径和环境变量配置环境:
"C:Program Files (x86)Microsoft Visual Studio 10.0VCvcvarsall.bat" amd64
在相关说明中,设置/entry:main
是错误的:入口点必须是 CRT 初始化入口点。 如果定义main
函数,则mainCRTStartup
。 默认情况下,链接器将选择此函数作为入口点,因此无需使用 /entry
指定入口点。
尝试将 libcmt.lib
添加到libfiles=
单击此处了解有关在 Windows 上链接到 C-libs 的更多信息。
顺便说一句。运行 VC++ 的主要优点是良好的 IDE。为什么需要从命令行构建它?
相关文章:
- Netbeans 10:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- CMake 错误:链接器命令失败,退出代码为 1 和 cpp.o 文件
- clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) - 体系结构的未定义符号 x86_64:
- 如何修复 clang: 错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- Android NDK.Build命令失败.未定义的引用.clang++:错误:链接器命令失败,退出代码为1
- 使用cmake错误链接boost日志
- 错误:链接器命令失败,退出代码为 1(使用 -v 查看调用):在 Macbook 上
- C++ XCODE ld:找不到体系结构x86_64 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -
- clang:错误:链接器命令失败,C++代码中的退出代码为 1(使用 -v 查看调用)
- 静态库中的 g++ 错误链接函数
- 未定义的参考错误链接天然函数Android
- C++编译错误:ld:找不到体系结构x86_64 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -v
- QT Q_PROPERTY错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- ld:找不到体系结构x86_64 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- OSX MOJAVE -LD:架构X86_64 clang找不到符号:错误:链接器命令失败,出口代码1
- C 错误链接器命令失败了出口代码1(使用-V查看调用)
- LD:架构x86_64 clang找不到符号:错误:链接器命令失败,出口代码1(使用-v to See
- 聚输出错误 - 链接列表
- Xcode链接器错误:链接器命令失败,退出代码为1(使用-v查看调用)
- 尝试构建C DLIB示例无法与数百个未定义的参考错误链接