首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未解析外部符号_CLSID_VdsLoader

未解析外部符号_CLSID_VdsLoader
EN

Stack Overflow用户
提问于 2013-11-04 11:22:28
回答 2查看 3.9K关注 0票数 4

我正在尝试编写一个程序来管理Windows系统中的硬盘/卷/分区。使用Windows的虚拟磁盘服务()来实现这一点似乎是个好主意。

我编写了一些代码来尝试它,但是当链接它时,我得到了以下错误:error LNK2001: unresolved external symbol _CLSID_VdsLoader

Microsofts 样本代码表示我必须链接到ole32.lib,从googling中我了解到uuid.lib也参与其中。我的项目设置中的“附加依赖项”行如下:

kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)

正如您所看到的,前面提到的两个库都包括在内。

我正在for上尝试所有这些。这可能是问题所在吗?也许快速版本不支持100%可用的COM对象?如果不是这样,那还能是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-04 12:36:30

这里解释了:参考线,例如,您只需要在stdafx.h文件中添加#include <InitGuid.h>

票数 4
EN

Stack Overflow用户

发布于 2017-04-07 14:44:44

我和未解决的外部guid也有类似的问题。我没有定义_MIDL_USE_GUIDDEF_宏,而是试图将代码编译为C++代码。

由于MIDL编译器生成C源文件来定义guids,所以它被编译为C代码,直到明确告诉visual将代码编译为C++代码为止。

MIDL生成的头文件包含(当编译为C++时):

代码语言:javascript
复制
extern "C"
{
    extern "C" const IID iid;   // extern "C" is redundant, extern would be enough
}

MIDL生成的guids定义文件包含(编译为C++时):

代码语言:javascript
复制
extern "C"
{
    const IID iid = { ... };    // _MIDL_USE_GUIDDEF_ macro is not defined
}

我们需要记住:

代码语言:javascript
复制
extern "C" block implies C name decoration; e.g.
  extern "C" { int a; }

extern "C" singleton implies C name decoration AND extern semantics; e.g.
  extern "C" int a;

in C++ non-extern namespace-scope const object implies internal linkage; e.g.
  const int a;         // internal linkage
  extern const int b;  // external linkage

考虑到这一点,我们可以看到头文件使用外部链接和C名称修饰声明const IID iid,而guids定义文件使用内部链接和C名称修饰定义const IID iid。链接不匹配,因此链接器将它们视为不同的实体。在这种情况下,带有外部链接的const IID iid是未定义的,稍后将在同一个翻译单元中使用。

当添加预定义的_MIDL_USE_GUIDDEF_宏guids定义文件时,将包含:

代码语言:javascript
复制
extern "C"
{
    extern "C" const IID iid = { ... };    // extern "C" is redundant, extern would be enough
}

因此,您需要添加预定义的_MIDL_USE_GUIDDEF_宏,以便将代码显式编译为C++。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19766686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档