x64 上的 WMI 链接器错误

Posted

技术标签:

【中文标题】x64 上的 WMI 链接器错误【英文标题】:WMI Linker Error on x64 【发布时间】:2012-03-16 17:13:41 【问题描述】:

我正在尝试使用 msdn 中的 WMI 示例:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa384724%28v=vs.85%29.aspx

我已将那里的最后一组代码逐字复制到 VS2008 中的控制台应用程序中。如果我有针对 win32 平台的发布或调试应用程序,它可以很好地编译(和运行)。如果我在 x64 平台上发布或调试它,我会收到以下链接器错误:

CppConsole.obj : error LNK2001: unresolved external symbol IID_IWbemConfigureRefresher
CppConsole.obj : error LNK2001: unresolved external symbol CLSID_WbemRefresher
CppConsole.obj : error LNK2001: unresolved external symbol IID_IWbemRefresher
CppConsole.obj : error LNK2001: unresolved external symbol CLSID_WbemLocator
CppConsole.obj : error LNK2001: unresolved external symbol IID_IWbemLocator
fatal error LNK1120: 5 unresolved externals

我已经尝试将 wbemuuid.lib 直接放入项目属性中的链接器输入中,但这与 pragma 没有任何区别。

有人用 x64 完成这项工作吗?还是我做错了什么?

【问题讨论】:

我只是使用 vs2008、x64 创建了一个新的控制台 c++ 应用程序,并且编译并运行正常。所以你的问题一定与一些丢失的文件或配置有关。 尝试检查您安装了哪个版本的Microsoft SDK以及wbemuuid.lib文件是否存在于该位置C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib\x64 @RRUZ 我只安装了 5.0,根本没有 x64 目录。我将查找从哪里 D/L MS SDK,看看是否可行。如果您在下面回复而不是评论,如果这是问题的根源,我可能会将您的答案标记为“正确”。 【参考方案1】:

我为此感谢 RRUZ,因为他/她至少让我走上了正确的道路,但由于他们没有发布答案(只是评论),我无法点击他们获得功劳。

基本上,由于我所处的工作环境,项目目录是以“非标准”方式设置的。另一个目录中已经有 wbemuuid.lib 的副本,该目录不是正确的版本(不是 x64),并且该目录在库包含列表中更高,因此永远无法访问正确的 Windows 平台库目录。

因此,如果您在使用 x86 与 x64 和库包含时遇到问题,请检查您的目录并检查它们的 ORDER。

【讨论】:

以上是关于x64 上的 WMI 链接器错误的主要内容,如果未能解决你的问题,请参考以下文章

Borland C++ Builder 6 上的奇怪链接器错误

项目存档上的 Apple Mach-O 链接器错误

设备和模拟器中iPhone应用程序上的Xcode链接器错误[重复]

iPhone上的Facebook登录导致“lang:错误:链接器命令失败”

std::exception::_Raise 和 std::exception::exception 上的 VC++ 链接器错误

XCode 6.0.1 上的 Apple Mach-O 链接器错误