用VC做的动态链接库
在delphi做的程序调用动态库的导出函数来获得一些状态数据,状态数据空间的申请由delphi完成,如下面的两种,
动态库获得状态数据后把这些状态数据放到这段缓冲中去,可是在动态库端的单步调试时,却发现这段申请的空间
禁止写,是不是用delphi动态申请的空间,在VC写的DLL中就不能用。我用下面两种方法分配空间:
第一种:
pBuf:Pchar;
iBufLen:=5000;
GetMem(pBuf,iBufLen);
pBuf:=#0第二种:
pBuf:Pchar;
iBufLen:=5000;
Pchar:=AllocMem(iBufLen);
pBuf:=#0;iReturn:=S_GetStatus(1,pBuf,iBufLen); //S_GetStatus是动态库的导出函数,用来获得状态数据;
在delphi做的程序调用动态库的导出函数来获得一些状态数据,状态数据空间的申请由delphi完成,如下面的两种,
动态库获得状态数据后把这些状态数据放到这段缓冲中去,可是在动态库端的单步调试时,却发现这段申请的空间
禁止写,是不是用delphi动态申请的空间,在VC写的DLL中就不能用。我用下面两种方法分配空间:
第一种:
pBuf:Pchar;
iBufLen:=5000;
GetMem(pBuf,iBufLen);
pBuf:=#0第二种:
pBuf:Pchar;
iBufLen:=5000;
Pchar:=AllocMem(iBufLen);
pBuf:=#0;iReturn:=S_GetStatus(1,pBuf,iBufLen); //S_GetStatus是动态库的导出函数,用来获得状态数据;
解决方案 »
- 程序退出時出現的外部異常external exception c000006一般是什麽原因引起的?
- 如何把一张图片做成褶皱的效果
- 用MIDAS 开发分布式程序如何锁定数据??
- 高手请进!
- 高分求财务软件数据库结构
- 情人节紧急问题求助!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- idtcpserber如果获取已经连接了的idtcpclient的IP地址
- Delphi 时间的计算?如何实现随意加上一段时间呢?
- 我的ADO组件为什么不能用?HELP?
- 用delphi 的tquery 控件可以执行sql server 生成的sql文件吗?
- 错误提示
- 怪事情....这是为什么呀......
因为你首地址的内容赋为0了 所以如果你在VC中用lstrlen(..)得到的就是0 那么当然就是不能写的
我觉得你应该再穿一个buffer的长度进去 让dll明确的知道从这个首址开始 它可以安全的使用这些后面的空间
var hMem:HGLOBAL;
lpBuf: Pointer;
hMem = GlobalAlloc(GHND GMEM_SHARE, sizeof(g_str));
然后 lpBuf = GlobalUnlock(hMem); // lpBuf就是lpvoid类型的
你把这个lpBuf做为 pBuf传入即可
还是不行呀