【问题标题】:WMI Linker Error on x64x64 上的 WMI 链接器错误
【发布时间】: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,看看是否可行。如果您在下面回复而不是评论,如果这是问题的根源,我可能会将您的答案标记为“正确”。

标签: c++ wmi 64-bit


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 2021-02-23
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多