gpt4 book ai didi

c++ - Windows SDK 7.1 64 位构建 CloseHandle 显然不在 kernel32.lib 中

转载 作者:行者123 更新时间:2023-11-28 06:24:16 28 4
gpt4 key购买 nike

我已经安装了 SDK 7.1,正在尝试将 C/C++ 项目从 MinGW(32 位)移植到 SDK 7.1 随附的 64 位 VC 2010。我是在安装 SDK 时设置的命令行环境中编译的。

我得到了所有要编译的文件,但是链接打败了我,无论是当我设置一个带有 C/C++ 运行时静态链接的构建时,还是当我设置一个带有 C/C++ 运行时动态链接的备用构建时C++ 运行时。

例如,Kernel32.lib 是我的链接的一部分,它位于 C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\x64\Kernel32.Lib,我确认它是从中检索的,并且然而,以下链接错误是两个构建报告的众多错误之一。

错误 LNK2019:未解析的外部符号 __imp__CloseHandle@4

如何解决这些联动问题? SDK 或随附的 VC 2010 中没有其他 x64 Kernel32.lib。

最佳答案

如果您处于正确的命令行环境中,可以通过从命令提示符调用 %VS100COMNTOOLS%\..\..\VC\vcvarsall.bat x64 进行设置(如果是 VS 2010)安装后,只需使用 cl test.cpp 即可编译以下简单程序。 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

关于c++ - Windows SDK 7.1 64 位构建 CloseHandle 显然不在 kernel32.lib 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28798151/

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