我建立一个ATL工程,建立ATL简单对象名叫TNeutral,行程模型选择Neutral,接受其他的默认选项。
为其添加一个函数Add,两个数相加,返回结果。
然后我写了一个简单的客户端来调用它,如下所示:#import ...
int _tmain(int argc, _TCHAR* argv[])
{
    CoInitialize(NULL);
    ITNeutralPtr ps;
    ps.CreateInstance(CLSID_TNeutral,NULL,CLSCTX_ALL);
    cout<<ps->Add(4,5)<<endl;
    ps.Release();
    CoUninitialize();
    return 0;
}编译运行,程序运行到CreateInstance这一句会失败。我如果修改注册表文件TNeutual.rgs,把下面这句val ThreadingModel = s 'Neutral'当中的Neutral给成别的例如Free或者Both,重新编译运行,程序就能执行打印出9.
问题是为什么我用Neutral的时候,程序会直接崩溃呢?求高人指教!