WTL工程中出现运行“Did you forget to pass the LIBID to CComModule::Init”的解决方法

开发WTL项目的时候,在运行的时候出现一个ALERT提示,提示内容如下:


问题原因:


我们从提示的语句中很容易看到,这是一个GUID_NULL造成的错误。所以我检查代码之后,是工程模块加载方法CComModule::Init需要三个参数,第三个参数GUID如果为默认的NULL,编译通过,但是运行的时候出现了以上的一个ASERT提示,我们找到调用这个的地方,是在winmain(_tWinMain)函数调用的。

 

解决方法:

HRESULT hRet = CComModule::Init(pObjMap, hInstance, pLibID = NULL);


在winmain(_tWinMain)中找到如下代码

 

hRes = _Module.Init(NULL, hInstance);

 

修改成

 

GUID guid;
hRes = _Module.Init(NULL, hInstance, &guid);

 

修改后,编译通过,运行成功!

你可能感兴趣的:(vc)