最近做一个项目,往一个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分配的内存怎么释放,我还没有搞明白.