我正在尝试使用CoCreateGuid(GUID * guid)为我的应用程序中的对象创建一个GUID。我在尝试使用此功能时遇到一些错误。
error C3699: '*' : cannot use this indirection on type 'IServiceProvider' in servprov.h
error C2872: 'IServiceProvider' : ambiguous symbol in servprov.h
error C2371: 'IServiceProvider' : redefinition; different basic types in servprov.h
这是我正在使用的代码,目前还不多。
#include "Stdafx.h"
#include "AutomationCPP.h"
#include <Rpc.h>
#include <Guiddef.h>
using namespace System;
void AutomationCPP::CustomAutomationCPP::Instantiate()
{
long result;
unsigned char *guidstr;
HRESULT hr;
GUID *UIAguid;
CoCreateGuid(UIAguid); //errors here
}
它说使用GUID指针作为参数,但我一直遇到这些错误。
非常感谢您的帮助!
最佳答案
在您的 header 之一(可能是using namespace System;
)中使用using指令(AutomationCPP.h
)导致了此问题。
您将间接包含servprov.h
,后者具有 ::IServiceProvider
的定义,并且您具有using指令,它将 System::IServiceProvider
纳入全局范围。这会导致对不完全合格的IServiceProvider
的任何使用都产生歧义。
摆脱using指令,而只对实际需要的命名空间System
中的符号使用using声明。