VC调用Delphi写的dll的一个问题的处理
2007-02-03 12:59
519 查看
最近做一个项目,往一个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分配的内存怎么释放,我还没有搞明白.
刚开始我用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分配的内存怎么释放,我还没有搞明白.
相关文章推荐
- Delphi 调用 C# Dll 时一个编译问题 mscorlib_TLB.h Ambiguity between 'String' and 'System::String'
- c#下调用VC dll 的一个问题
- 关于delphi调用vc编写的dll中参数类型有关问题
- VC调用Delphi的DLL时遇到的问题及解决
- JNA的一个小问题-调用dll处理字符串,在java中不能反映出字符串变化
- 请问Delphi调用VC写的dll,有传入和传出参数都是unsigned char*运行中有有关问题
- Delphi6 调用 C# Dll 时一个编译问题
- 问一个调用VC下编写的dll的问题???好怪哦
- 关于Powerbuilder调用VC的dll出现的一个问题及解决办法
- VC调用Delphi的DLL时遇到的问题及解决
- delphi调用vc编写的DLL应注意的问题
- delphi调用vc编写的DLL应注意的问题
- C/C++调用Delphi制作的dll时发现的一些问题
- C#调用Delphi DLL时,要注意的几个问题。
- Delphi中调用VC编写的DLL内对象
- vb.net 调用Delphi dll问题
- 利用VC和ADO接口编写一个dll模块实现对数据库数据的处理
- QT调用Interop.LabelManager2.dll(C#dll)的问题处理
- Delphi写的DLL,OCX中多线程一个同步问题
- 多个线程调用同一个处理函数的互斥问题