描述:
Creating Type Library...
Processing C:\MyDocuments\MyProjects\G\Sock\ISock.idl
ISock.idl
Processing E:\Microsoft Visual Studio\VC98\INCLUDE\unknwn.idl
unknwn.idl
Processing E:\Microsoft Visual Studio\VC98\INCLUDE\wtypes.idl
wtypes.idl
Linking...
GTaskMgr.obj : error LNK2001: unresolved external symbol _IID_ITaskMgr
Debug/Sock.dll : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
Creating browse info file...
Sock.dll - 2 error(s), 0 warning(s)
我查看/p选项产生的GTaskMgr.i文件,并没有引用符号_IDD_ITaskMgr呀(IID_ITaskMgr倒是有)。
说明:我的工程是普通的win32 dll工程,不是atl工程。
为何IDD_ITaskMgr之前加了下画线?
解决方案1:
我也碰到这种情况,当时好象是使用一个ACTIVEX 控件时出现这种情况,我只是把IID_ITaskMgr改成_IDD_ITaskMgr就行了,到底为什么我也不知道,好象是宏定义的时候出问题,具体怎样,我不清楚,你试试看,行不行~~
解决方案2: 呵呵,道理一样。
比如文件里有这么一句
#ifndef abc
#define abc
const IID IID_ITaskMgr = {0x5A86A901,0xB30B,0x4d6c,{0x91,0x11,0xF7,0x55,0x37,0xFA,0x86,0xA2}};
#endif
其中有a.cpp, b.cpp, c.cpp已用了这个文件。
编译器要一个一个编译。比如说先编译a.cpp,它看到abc没有定义,它马上就定义了abc,然后初始化IID。然后它开始编译b.cpp,编译器一看abc已经定义了(编译a.cpp时定义的),它就把后面对IID的初始化代码跳过去了。
去掉_ATL_MIN_CRT
将常规属性选项“在 ATL 中最小使用 CRT”设置为否
您可能想查找下面的文章:
- IWebBrowser2::Navigate的问题
- IWebBrowser2::Navigate的问题
- 请教IWebBrowser2问题~~~~~~~~~在线等
- 如何用IWebBrowser2判断当前窗口是否处于激活状态?
- #import"wmpdll",在wmplib空间找不到对“IID_IWMPPlayer”的定义,怎么办?
- 列集IPicture接口的问题,UP的也有分数
- 通过IWebBrowser2能获得IE中已经载入的其他插件的接口么?
- 根据IID值怎样能实例化一个接口?(不通过QueryInterface来实现)
- 如何在TLB中添加相关的IID_xxxx?
- 给定一个url,如何用IWebBrowser2接口获得该url的源码?