描述:
新建一个ATL COM(dll)工程,选择了support MFC选项。
然后添加一个一个ATL simple object,接口只有一个方法
STDMETHODIMP CDrawT3A::DrawTriangle(long lCDC, short sArraySize, POINT sArray[])
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())
// TODO: Add your implementation code here
CDC* pDC = (CDC*) lCDC;
short i = sArraySize;
while (i) {
if (i!=sArraySize)
{
pDC->LineTo(sArray[i].x,sArray[i].y);
}
pDC->MoveTo(sArray[--i].x,sArray[--i].y);
}
return S_OK;
}
编译都通过了,也注册成功了。
在客户端调用确总是有错,代码如下:
#include "DrawTriangle.h"
#include "DrawTriangle_i.c"
...
if ( FAILED( CoInitialize( NULL )))
{
return;
}
HRESULT hr;
IDrawT3A* pDrawT3A;
hr = CoCreateInstance( CLSID_DrawT3A,
NULL,
CLSCTX_LOCAL_SERVER,
IID_IDrawT3A,
(void**) &pDrawT3A );
...
编译通过,运行总是CoCreateInstance出错。一旦我换成一个没有支持MFC的简单COM,那么运行就成功了。
解决方案1:
静态连接mfc,release编译!
解决方案2:是什么错误?