我有一个用托管代码编写并成功运行的应用程序,但是现在我禁用了visual studio 2008中的/clr选项,并进行了必要的更改以删除管理代码并将其转换为本机,并成功编译了代码,但是,功能CoInitializeSecurity()
与HResult = 0x800401f0
失败。说CoInitialize has not been called....
当我说GetLastError()
时,它是returns 0
。
HRESULT hres = CoInitializeSecurity(
NULL,
-1,
NULL,
NULL,
RPC_C_AUTHN_LEVEL_DEFAULT,
RPC_C_IMP_LEVEL_IMPERSONATE,
NULL,
EOAC_NONE,
NULL
);
if (FAILED(hres))
{
MessageBox(NULL, "COM Init failed...", "Stop", MB_OK);
return FALSE;
}
提前感谢,
如果/clr启用
,相同的代码可以正常工作
确定。之前是CLR负责调用CoInitializeEx()。从Main()入口点的[STAThread]属性或传递给Thread::SetApartmentState()的值(如果有的话)中选择公寓类型。默认为MTA。
这不会再发生了,因为你现在编译没有/clr。因此你必须自己调用CoInitializeEx()