无法解析的外部符号_IID / _CLSID

Unresolved external symbol _IID / _CLSID

本文关键字:IID CLSID 符号 外部      更新时间:2023-10-16

我用MSVC 2010用一个简单的默认ATL对话框创建了一个默认的ATL项目。然后,我将第二个项目添加到解决方案中,名为MyControls,我在向导的帮助下创建了ATL DHTML控件。然后我把ATL DHTML控件放到ATL对话框。

现在我想在ATL对话框的OnInitDialog函数中调用ATL DHTML控件的一些方法。为了能够打出这样的呼叫:

CComPtr<IDHTMLControl> ptr;
HRESULT hr = GetDlgControl(IDC_ACTIVEX_CONTROL_DHTML
    , IID_IDHTMLControl, (void**)&ptr);

我包括文件DHTMLControl.h从我的控制项目。但是,我得到了以下错误:

  • 错误1错误LNK2001: unresolved external symbol _IID_IDHTMLControl
  • 错误2错误LNK2001:未解析的外部符号_LIBID_MyControlsLib
  • 错误3错误LNK2001:未解析的外部符号_CLSID_DHTMLControl
  • 错误4错误LNK2001: unresolved external symbol _IID_IDHTMLControlUI

注意:看起来我正在链接我的控件。但是,我错误地添加了MyControls。lib to Linker->Input-> additional Dependencies &在链接器->通用->附加库目录中指定../$(配置)。

有人知道吗?谢谢!

问题与如何将一个项目与另一个项目联系起来有关。这里缺少一些东西,因为您没有显示代码,这只是一个纯粹的猜测。

在控制项目中,您有一个类型库,在构建时,还生成文件MyControls_i.h, MyControls_i.c, MyControls_p.c。我想在应用程序项目中,您包含了将符号声明为外部的_i.h文件,并且您没有包含实际定义符号的_i.c文件。