1

VS2012 を使用して com dll を作成しました。DLL プロジェクトと PS プロジェクトの 2 つのプロジェクトを取得しました。PS には 3 つのクラスがあります。 myproj_i.h myProj_i.c myProj_p.c

今、別の MFC プロジェクトから dll を呼び出したい:

hr = CoCreateInstance( CLSID_MYTASK, NULL, CLSCTX_INPROC_SERVER, IID_IMYTASK, (void**) &pMYTASK );

myproj_i.h ファイルを含めたので、認識されたすべてのシンボルを取得しましたが、_i.c ファイルが見つからないため、それらをリンクできません。

それらをプロジェクトに追加すると、大量の PCH エラーが発生します。

MFC プロジェクトをリンクして DLL を呼び出すにはどうすればよいですか?

また、dll の #import を使用しようとしましたが、TLH エラーが見つからず、DLL プロジェクトでそのファイルが見つかりませんでした。

myProjPS.lib を含めても解決しませんでした...

4

1 に答える 1

1

MIDL で生成された .c ファイルは、プリコンパイル済みヘッダーを使用しません。それらをプログラムにリンクする場合 (私は通常それらの静的ライブラリを作成しますが、それは別の方法です)、それらの特定の .c ファイルのプリコンパイル済みヘッダーをオフにする必要があります。

  • ソリューション エクスプローラーで myProj_i.c ファイルを右クリックし、そのプロパティを表示します。
  • 上部の 2 つのドロップ リストで [すべてのプラットフォーム]/[すべての構成] を選択します。
  • 左側のツリーで C++ 設定を展開します。
  • 左側のツリーでプリコンパイル済みヘッダーを選択します
  • そのファイルに対してそれらをオフに切り替えます。

これにより、正常にコンパイルおよびリンクできるようになります。

于 2013-09-05T08:03:21.457 に答える