错误LNK2001:未解析的外部符号_IID_ICatalogObject与Visual C++ 6 + Windows Server 2003 Platform SDK

ioekq8ef  于 2023-04-13  发布在  Go
关注(0)|答案(1)|浏览(200)

我有一个实用程序,我需要在Windows 2000机器上运行。它包括<comadmin.h>在Visual Studio 2019中,它编译得很好,我不需要指定任何额外的.lib文件。我删除了所有C11及更高版本的代码,编译完成,但链接失败。在Windows XP上的VC6中,使用Windows Server 2003 SP1 Platform SDK,得到以下错误:

ComPlus.obj : error LNK2001: unresolved external symbol _IID_ICatalogObject
ComPlus.obj : error LNK2001: unresolved external symbol _IID_ICatalogCollection
ComPlus.obj : error LNK2001: unresolved external symbol _CLSID_COMAdminCatalog
Debug/ComPlus.exe : fatal error LNK1120: 3 unresolved externals

我试过包含comsupp.lib和comsvcs.lib,但没有用。示例代码:

CComQIPtr <ICOMAdminCatalog> pCatalog;
  HRESULT hr = pCatalog.CoCreateInstance(CLSID_COMAdminCatalog);

平台SDK文档指定:

Platforms: Windows 2000, Windows XP, Windows Server 2003

Header: Declared in comadmin.h

Library: Included as a resource in comadmin.dll

尝试将comadmin.dll指定为库,但建议其格式错误。DLL具有如下所示的TYPELIB资源:

使用这个需要什么配置,或者它必须针对这个旧的SDK进行不同的编码?

djmepvbi

djmepvbi1#

问题是Platform SDK文档似乎没有引用要包含的正确lib文件。
我必须将SvcGuid.Lib与

#pragma comment(lib, "SvcGuid.Lib")

但是,调试构建不起作用,因为VC++6抛出错误

SvcGuid.Lib(iid.obj) : fatal error LNK1103: debugging information corrupt; recompile module

虽然发布构建工程发现与此库包括在内。

相关问题