用VC建的DLL工程,在CMyApp::InitInstance中需要做些初始化,
在操作完数据库调用myConnPtr ->Close() 时程序就停在这句话不动了。
把以上的数据库操作提出来另作为一个函数InitDatabase(),出了InitInstance
以后调用InitDatabase没有任何问题。
MSDN里说不允许这么做!
“OLE operations involving calls to an OLE object should not be done in the DllMain function of a DLL because a deadlock can occur. ”
可怜的InitInstance就是在DllMain里调用的。
在使用VC构建的DLL工程中,尝试在CMyApp::InitInstance中进行数据库操作会导致程序挂起。若将数据库操作封装为独立函数,则问题不再出现。此现象可能源于DLL的DllMain函数中执行OLE操作引发的死锁。

被折叠的 条评论
为什么被折叠?



