5

我使用 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);

我包括来自 MyControls 项目的文件 DHTMLControl.h。但是,我收到以下错误:

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

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

有人有想法吗?谢谢!

4

1 回答 1

6

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

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

于 2013-05-10T07:36:55.720 回答