我的系统中有一个 makefile 项目。最近,我添加了一些使用以下 Windows API 的新函数:
RegOpenKeyEx
RegEnumKeyEx
RegCloseKey
RegGetValue
为了获得这些 API,我还添加了 windows.h
头文件。
代码在我的机器上编译和链接正常。但是,在我同事的机器上链接失败。我们都在 64 位 Windows 机器上工作。
在他的电脑上我得到了错误:
error LNK2001: unresolved external symbol __imp_RegOpenKeyExW
error LNK2001: unresolved external symbol __imp_RegGetValueW
error LNK2001: unresolved external symbol __imp_RegCloseKey
error LNK2001: unresolved external symbol __imp_RegEnumKeyExW
我尝试过的:
由于正在使用的库是 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib\x64
Advapi32.lib
我尝试添加以下行:
LINKFLAGS += -L "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib\x64"
我把库的路径添加到环境变量PATH
我将库复制到输出文件夹。
没有任何效果。
正如我之前所说,代码在我的电脑上运行良好,但在另一台电脑上运行失败。
最佳答案
注册表函数要求您将 Advapi32.lib
传递给链接器。这是您错过的步骤。
关于c++ - 链接某些 Windows API 时出现链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22954119/