无法解析的外部符号_IID / _CLSID
Unresolved external symbol _IID / _CLSID
我用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
文件。
相关文章:
- 获取 CLSID 密钥问题
- 使用GDI+删除位图和CLSID对象时,C++内存管理失败
- 如何初始化常量 CLSID
- 什么是CLSID?是图形用户界面吗?
- C++ MFC create IShellItem from CLSID (GUID)
- 用于 x264 DirectShow 筛选器的 CLSID
- 从C++中的接口名称获取IID?(VS 2010自动化)
- Windows 外壳扩展教程不会将 CLSID 添加到注册表
- 获取我自己的dll的CLSID
- VS2010 c++: Change CLSID of COM dll
- 获取COM-Object的dll文件,而不使用c++中的CLSID和注册表