未解析的外部符号_IID/_CLSID

Ale*_*lex 4 c++ atl

我使用MSVC 2010创建了一个默认的ATL项目,其中包含一个简单的默认ATL对话框.然后我将第二个项目添加到解决方案中,命名为MyControls,我在Wizard的帮助下创建了ATL DHTML Control.然后我将ATL DHTML Control放到ATL对话框中.

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

CComPtr<IDHTMLControl> ptr;
HRESULT hr = GetDlgControl(IDC_ACTIVEX_CONTROL_DHTML
    , IID_IDHTMLControl, (void**)&ptr);
Run Code Online (Sandbox Code Playgroud)

我从MyControls项目中包含了DHTMLControl.h文件.但是,我收到以下错误:

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

注意:我似乎错误地链接了MyControls.lib,但是,我在Linker-> General-> Additional Library Directories中将MyControls.lib添加到Linker-> Input-> Additonal Dependencies&指定../$(Configuration).

有人有想法吗?谢谢!

Rom*_* R. 5

问题与您如何将一个项目与另一个项目链接有关.这里缺少一些东西,因为你没有显示代码,它只是一个纯粹的猜测.

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