我下载了一个带dll的源代码,当调用LoadLibrary(*.dll)时,调试dll没有调用dllmain(),而是调用了RegisterCodec(),没有找到引用,大侠们帮帮我。

解决方案 »

  1.   

    我也不太懂,是不是com组件,怎样分辨是不是com组件?
      

  2.   

    用depends或别的程序查看dll的输出接口,如果有Register*的话,那是控件,需要注册的
      

  3.   

    我用depends查看了dll的输出接口,没有RegisterCodec,在dll代码里是这样写的:#define REGISTER_CODECS_NAME(x) CRegisterCodecs ## x
    #define REGISTER_CODECS(x) struct REGISTER_CODECS_NAME(x) { \
        REGISTER_CODECS_NAME(x)() { for (int i = 0; i < sizeof(g_CodecsInfo) / sizeof(g_CodecsInfo[0]); i++) \
        RegisterCodec(&g_CodecsInfo[i]); }}; \
        static REGISTER_CODECS_NAME(x) g_RegisterCodecs;void RegisterCodec(const CCodecInfo *codecInfo)
    {
      if (g_NumCodecs < kNumCodecsMax)
        g_Codecs[g_NumCodecs++] = codecInfo;
    }使用LoadLibrary(*.dll)后就调用RegisterCodec()(这个是控件么,我是初学者,不太明白控件怎么使用,大侠帮帮我
      

  4.   

    用depends等查看你的dll导出函数。RegisterCodec导出了没
      

  5.   

    我找到原因呢了,在调用dllmain之前,dll会初始化所用static变量