我用ATL开发了个com组件,不依赖MFC,纯C++写的。
编译debug版以后,试用regsvr32 注册提示注册成功,可以试用,可是编译release版以后,虽然也提示注册成功但是我的调用程序却在CreateInstance是不成功。导致我的调用程序无法使用我的release版com组件。请高手指教。

解决方案 »

  1.   

    查看一下你的代码中是否有关键地方使用ASSERT断言了的。。release会忽略掉ASSERT
      

  2.   

    _ATL_MIN_CRT去掉了吗?出了什么错?检查一下GetLastError()以及CreateInstance的返回值
      

  3.   

    CoCreateInstance(**)? 首先要看看DllGetClassObject()有没有问题。
      

  4.   

    1/ 没有使用断言
    2、_ATL_MIN_CRT去掉了
      

  5.   

    设置win32 Release Mindependency为Active,在project->settings->C/C++ ->preprocessor definitions中去掉“_ATL_MIN_CRT”,编译试一下。
      

  6.   

    to:starg(123)
    我现在就是这种模式进行编译的,debug行,release不行。我的预处理里是这些:WIN32,NDEBUG,_WINDOWS,_MBCS,_USRDLL,_ATL_STATIC_REGISTRY
      

  7.   

    编译成功了吗? dll存在了吗?
      

  8.   

    具体错误信息是什么? 有可能是idl文件中的CLSID和rgs文件中的不一致
      

  9.   

    debug和release都是用同一个测试程序测的?测试程序怎么写?可以贴出来看看!
    不能创建肯定会返回HRESULT的值是多少呢?没有这些信息我们也没法帮到你!