从MFC调用ATL COM dll

时间:2013-09-05 07:37:56

标签: c++ visual-studio-2012 com mfc atl

我用VS2012编写了一个com dll。我有2个项目 - 我的DLL项目和PS项目。 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?

我也试过使用#llmport的dll,但后来我错过了TLH错误,我还没有在DLL项目中找到该文件。

包括myProjPS.lib也没有解决它......

1 个答案:

答案 0 :(得分:1)

MIDL生成的.c文件不使用预编译头文件。如果将它们链接到程序中(我通常会创建它们的静态库,但这是一种不同的方法),则需要为这些特定的.c文件关闭预编译的头文件。

  • 右键单击soluton explorer中的myProj_i.c文件并显示其属性。
  • 在前两个下拉列表中选择所有平台/所有配置。
  • 展开左侧树中的C ++设置。
  • 在左侧树中选择预编译标题
  • 为该文件关闭它们。

这应该允许它成功编译和链接。