关于VC和C#分别调用VC写的COM组件有关问题

关于VC和C#分别调用VC写的COM组件问题
有一组用来进行OCR识别的代码,将其用VC封装成COM组件,然后用VC和C#分别调用这个COM组件(代码一致),结果出现VC调用成功,c#调用失败的问题;经调试发现问题出在COM组件加载OCR引擎的时候,主要代码如下:

 
C/C++ code
  
/*szOCRDLL(绝对路径)为其他公司提供的OCR识别的DLL,该DLL同时调用了其他一些DLL,
这些dll放在一个目录中,比如D://TmpDLL,在调用::LoadLibrary((LPCTSTR)szOCRDll)之前已经
设置当前工作目录为D://TmpDLL,方便搜索并加载这些dll;*/
      
    SetLastError(0);
    if (HMODULE hModule = ::LoadLibrary((LPCTSTR)szOCRDll))
    {    
        //在这里调用GetLastError的话,VC和C#分别返回 0 和 6
        GetDriverFuncs_Ptr pGetDriverFuncs = (GetDriverFuncs_Ptr)::GetProcAddress(hModule, "GetDriverFuncs");
        if (!pGetDriverFuncs)
        {
            ::FreeLibrary(hModule);
             return OCR_ERROR_LOAD_DLL_FAILED;
        }

                //获取DLL提供的功能函数表
        OCR_DWORD funcCount = 0;
        OCR_LPFunc tempTable = NULL;
        pGetDriverFuncs(&tempTable, &funcCount);
        DWORD * funcTable = new DWORD[256];
        int i = funcCount;
        while(i--)
        {
           funcTable[tempTable[i].func_index] = (DWORD)tempTable[i].func_address;
        }
            //开始初始化OCR引擎,INDEX_OCRInitialize是OCRInitialize函数在函数表中的索引
        OCR_ErrCode err = ((OCRInitialize)funcTable[INDEX_OCRInitialize])(NULL, L"en", GetLicense);
                //在这里调用GetLastError的话,VC和C#分别返回 0 和 126
        if(OCR_SUCCESS != err)
           return err;

    }


  看起来c#调用时,似乎是加载某些dll失败,但是实在找不到原因,路径什么的应该没什么问题,VC就能正确调用,还望高手相助,不胜感激;



------解决方案--------------------
首先保证加载成功,然后才能说是否为调用时的错误
------解决方案--------------------
用depend.exe看看需要加载什么dll;
DLL中加入了一个的DEF文件
参考:
http://topic.csdn.net/t/20050902/20/4246780.html
------解决方案--------------------
enable native debug, then debug into