VC调用Delphi写的dll的一个问题的处理

    技术2022-05-11  89

          最近做一个项目,往一个Delphi写的系统中加入VC新模块.VC模块需要调用以前Delphi写的权限判别的DLL.该DLL出口函数传的参数是String型.我不清楚该类型对应VC的什么数据类型.网上查了查也没有找到有人解释.所以只好自己琢磨了.

         刚开始我用char*作为参数,结果出了内存错误.

         后来我用CString的指针和引用都能得到正确的结果,不过在函数结束后,还有内存错误.

       我分析CString 的指针和引用都能够得到正确结果,那传入char**指针应该没问题.结果一试果然成功.呵呵,原来delphi是对char指针的地址在操作.

    下面列出我的调用代码:

    char *pszParam1 =NULL;

    char*pszParam2 = NULL;

    typedef bool(PASCAL* LPGetParams)(char**,char **);

    LPGetParams ProcGetParams;

    HINSTANCE hDll = ::LoadLibrary(D_STR_INIDLL);

    if(hDll==NULL)

    .......

    ProcGetParams = (LPGetParams)GetProcAddress(hDll,"ExtGetParams");

    .....

    bool bRetV = ProcGetParams(&pszParam1,&pszParam2);

    .......

    ::FreeLIbrary(hDll);

    还有个问题,就是Delphi分配的内存怎么释放,我还没有搞明白.


    最新回复(0)