DLL修改主程序传入的结构变量(指针)成员时出错

shepher 2010-10-13 10:16:05
结构体定义 在dll和VC中均定义次结构
struct state
{
int Pos1, Pos2, Pos3, Pos4;
};

dll是用c++ builder写的
导出函数定义如下
extern "c" __declspec(dllexport) _cdecl GetPosInfo(struct state *info);
dll 函数体
extern "c" __declspec(dllexport) _cdecl GetPosInfo(struct state *info)
{
info->Pos1 = ..;
info->Pos2 = ..;
...
}
在VC中
{
struct state *POSINFO = new state;

POSINFo->Pos1 = ..;
....

GetPosInfo(POSINFO); =====>这一步会提示访问错误

...
}

同样dll中另外一个接口函数与这个函数类似,仅完成了char * 类型数据的传入,能够被dll正确使用,这个函数
也是采用的指针类型,但是会提示错误。

请问错误在什么地方?



...全文
121 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
shepher 2010-10-14
  • 打赏
  • 举报
回复
....我自己的错。。。赋值时弄错了
  • 打赏
  • 举报
回复
errror message?
shepher 2010-10-13
  • 打赏
  • 举报
回复
我debug了一下,vc只要一调用GetPosInfo
在DLL工程里,在函数入口处就提示访问错误,具体错误信息如下:
access violation at 0xxxxxxxx: read of address 0x0000042c



to lazy_2010:
啊,打漏了,是个void类型的
extern "c" __declspec(dllexport) void _cdecl GetPosInfo(struct state *info)
lazy_2010 2010-10-13
  • 打赏
  • 举报
回复
估计是你别的代码的问题,不是数据结构的问题;

试一试统一赋值成 0 输出呢?

另外,为啥没有定义返回值类型呢?
shepher 2010-10-13
  • 打赏
  • 举报
回复
dll 函数体
extern "c" __declspec(dllexport) _cdecl GetPosInfo(struct state *info)
{
info->Pos1 = ..;
info->Pos2 = ..;
...
}
就只做了赋值。。
  • 打赏
  • 举报
回复
GetPosInfo内部做了啥操作了?具体崩溃在哪一行
shepher 2010-10-13
  • 打赏
  • 举报
回复
恩 error message:

access violation at 0xXXXXXXX: read of address 0x0000042c


15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧