5

MSVC 2010 を使用して、単純な既定の ATL ダイアログを使用して既定の ATL プロジェクトを作成しました。次に、MyControls という名前の 2 番目のプロジェクトをソリューションに追加し、ウィザードを使用して ATL DHTML コントロールを作成しました。次に、ATL DHTML コントロールを ATL ダイアログに配置しました。

OnInitDialogここで、ATL ダイアログの関数でその 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 を [リンカー] -> [入力] -> [追加の依存関係] に追加し、[リンカー] -> [一般] -> [追加のライブラリ ディレクトリ] で ../$(Configuration) を指定しました。

誰にもアイデアがありますか?ありがとう!

4

1 に答える 1

6

問題は、あるプロジェクトを他のプロジェクトにリンクする方法に関連しています。ここには何かが欠けています。コードを表示していないため、純粋な推測に過ぎません。

MyControls_i.hコントロール プロジェクトには、ビルド時にファイル、MyControls_i.c、も生成するタイプ ライブラリがありますMyControls_p.c。アプリケーション プロジェクトで、シンボルを外部として宣言したファイルをインクルードし、実際にシンボルを定義し_i.hたファイルをインクルードしなかったと思います。_i.c

于 2013-05-10T07:36:55.720 に答える