请问
DllMain () 里面 "不适合" 调用 COM  DCOM 吗 ??我把以下写在 DllMain () 里面 , 结果发现问题很多CoInitialize(NULL);   
_testPtr ptr = NULL
ptr.CreateInstance(__uuidof(test);  (1) 如果是 ActiveX.EXE ( DCOM ) 放在 DllMain () 里面启动 ---> 会出现伺服器忙碌中, 然後卡在那裏 (2) 如果是 ActiveX.DLL ( DCOM ) 放在 DllMain () 里面启动 ---> 接下来只要某个
    __declspec(dllexport) int WINAPI xxxx() 里面呼叫到其他 COM 之类的 --->
    程式就会当掉只要不在 DllMain () 里面调用 COM 
"改在"  __declspec(dllexport) int WINAPI xxxx() 里面调用
则就不会有 (1)(2) 的问题 
==========
我的 COM. DCOM 都是用 VB6 写的 , 用 VB6 调用完全没问题 
 

解决方案 »

  1.   

    当然,这个MSDN文档说得很清楚。
      

  2.   


    可以告之 MSDN 的 相关URL 吗
    我只找到1个说法
    ===================
    记得很久以前在一本叫advanced windows programming 的书上看到的,在DLLMain函数中不能启动线程,原因是:OS对DLLMain的调用是序列化的(或者叫串行化),启动线程时系统要调用 DLLMain,传给它DLL_THREAD_ATTACH 参数,而你在DLLMain中启动线程,由于串行化的关系,系统无法再次调用DLLMain,发生死锁。
    ===================
      

  3.   

    MSDN的URL俺忘了,但是它确实是这么说的。
    你看看这篇文章吧:
    http://hi.baidu.com/bxwpz/blog/item/6b5a8f1e01cfcaf2e1fe0bc0.html