windows sdk 7.1 64 位构建 CloseHandle 显然不在 kernel32.lib
windows sdk 7.1 64-bit build CloseHandle apparently not in kernel32.lib
我已经安装了 SDK 7.1,正在尝试将 C/C++ 项目从 MinGW(32 位)移植到 SDK 7.1 随附的 64 位 VC 2010。我是在SDK安装时设置的命令行环境下编译的
我得到了所有要编译的文件,但是链接打败了我,无论是当我设置一个带有静态链接的 C/C++ 运行-time 的构建时,还是当我设置具有 C/C++ 运行 时间动态链接的替代构建。
例如 Kernel32.lib 是我链接的一部分,它在这里,C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\x64\Kernel32.Lib 我确认它正在检索自,但以下链接错误是两个版本报告的众多错误之一。
错误 LNK2019:无法解析的外部符号 __imp__CloseHandle@4
如何解决这些联动问题? SDK 中没有其他 x64 Kernel32.lib 或随附的 VC 2010。
如果您处于正确的命令行环境中,可以通过在安装了 VS 2010 的情况下从命令提示符调用 %VS100COMNTOOLS%\..\..\VC\vcvarsall.bat x64
来设置,那么只需 [=13] 就可以编译以下简单程序=]. kernel32.lib
自动链接,因为所有 Windows 应用程序都需要它:
#include <windows.h>
int main()
{
HANDLE h;
CloseHandle(h);
}
听起来您正在使用 32 位编译器并明确指定 64 位 kernel32.lib,我可以重现。请注意横幅“32 位 C/C++ 优化编译器...”:
C:\>cl test.cpp -link "c:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64\Kernel32.Lib"
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.
test.cpp
c:\test.cpp(6) : warning C4700: uninitialized local variable 'h' used
Microsoft (R) Incremental Linker Version 10.00.40219.01
Copyright (C) Microsoft Corporation. All rights reserved.
/out:test.exe
"c:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64\Kernel32.Lib"
test.obj
test.obj : error LNK2019: unresolved external symbol __imp__CloseHandle@4 referenced in function _main
我已经安装了 SDK 7.1,正在尝试将 C/C++ 项目从 MinGW(32 位)移植到 SDK 7.1 随附的 64 位 VC 2010。我是在SDK安装时设置的命令行环境下编译的
我得到了所有要编译的文件,但是链接打败了我,无论是当我设置一个带有静态链接的 C/C++ 运行-time 的构建时,还是当我设置具有 C/C++ 运行 时间动态链接的替代构建。
例如 Kernel32.lib 是我链接的一部分,它在这里,C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\x64\Kernel32.Lib 我确认它正在检索自,但以下链接错误是两个版本报告的众多错误之一。
错误 LNK2019:无法解析的外部符号 __imp__CloseHandle@4
如何解决这些联动问题? SDK 中没有其他 x64 Kernel32.lib 或随附的 VC 2010。
如果您处于正确的命令行环境中,可以通过在安装了 VS 2010 的情况下从命令提示符调用 %VS100COMNTOOLS%\..\..\VC\vcvarsall.bat x64
来设置,那么只需 [=13] 就可以编译以下简单程序=]. kernel32.lib
自动链接,因为所有 Windows 应用程序都需要它:
#include <windows.h>
int main()
{
HANDLE h;
CloseHandle(h);
}
听起来您正在使用 32 位编译器并明确指定 64 位 kernel32.lib,我可以重现。请注意横幅“32 位 C/C++ 优化编译器...”:
C:\>cl test.cpp -link "c:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64\Kernel32.Lib"
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.
test.cpp
c:\test.cpp(6) : warning C4700: uninitialized local variable 'h' used
Microsoft (R) Incremental Linker Version 10.00.40219.01
Copyright (C) Microsoft Corporation. All rights reserved.
/out:test.exe
"c:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64\Kernel32.Lib"
test.obj
test.obj : error LNK2019: unresolved external symbol __imp__CloseHandle@4 referenced in function _main