E2208 cannot access an inactive scope 问题

tianlu123 2011-08-24 09:16:03
急啊,现在调用函数查看函数内定义数组和结构体出现这个问题,请大家帮忙分析下
...全文
234 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianlu123 2011-08-24
  • 打赏
  • 举报
回复
可以了,妖哥真给力,我是信了
ccrun.com 2011-08-24
  • 打赏
  • 举报
回复
我用你提供的原型,做了一个简单的例子程序,你可以参考一下。
C++写的DLL:
#include <stdio.h>

extern "C" __declspec(dllexport)
int WINAPI FP100_DownpointFP_ASC(unsigned char *fp_data, int FP_num, char *ip, int port)
{
// 这里仅仅是简单的将输入的参数显示而已
// 其中fp_data只显示第一个字节的值

char szBuf[1024];
sprintf(szBuf, "1: %d, 2: %d, 3: %s, 4: %d", fp_data[0], FP_num, ip, port);

MessageBoxA(0, szBuf, "DLL中的提示", MB_OK | MB_ICONINFORMATION);

return 0;
}


Delphi中调用:
function FP100_DownpointFP_ASC(fpdata: PByte; FP_num: integer; ip: pchar; port: integer): Integer; stdcall; external 'project1.dll';

procedure TForm1.Button1Click(Sender: TObject);
var
fp_data: array[0..255] of byte;
ip: array[0..255] of char;
ret_Flag: Integer;
begin
// 简单赋一些值
fp_data[0] := $FF;
StrCopy(ip, 'test而已');

ret_Flag := FP100_DownpointFP_ASC(@fp_data, 1, ip, 1000);

Caption := IntToStr(ret_Flag);
end;
tianlu123 2011-08-24
  • 打赏
  • 举报
回复
DLL int WINAPI FP100_DownpointFP_ASC(unsigned char *fp_data, int FP_num, char *ip, int port);
ccrun.com 2011-08-24
  • 打赏
  • 举报
回复
FP100_DownpointFP
这个函数的原型是什么呢。
zzbinfo 2011-08-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 tianlu123 的回复:]
估计是第一行的问题,因为他用0带进去可以
[/Quote]可以尝试换换,换成其他的试试不就知道了。这个错误主要是访问的地址错误造成的。
tianlu123 2011-08-24
  • 打赏
  • 举报
回复
估计是第一行的问题,因为他用0带进去可以
tianlu123 2011-08-24
  • 打赏
  • 举报
回复
      StrCopy(@FpStr, pchar(tmpStr));
// FillChar(FpStr,sizeof(FpStr),0);
// StrMove(@FpStr,pchar(tmpStr),996);
sleep(2);
//ret_Flag := FP100_DownpointFP(@FpStr, BakNo[i], pchar(IpStr), 5101);
// ret_Flag := FP100_DownpointFP_ASC(@FpStr[0],1,pchar(IpStr),5101);
ret_Flag := FP100_DownpointFP_ASC(@FpStr, 1, pchar(IpStr), Port);
tianlu123 2011-08-24
  • 打赏
  • 举报
回复
StrCopy(@FpStr, pchar(tmpStr));
// FillChar(FpStr,sizeof(FpStr),0);
// StrMove(@FpStr,pchar(tmpStr),996);
sleep(2);
//ret_Flag := FP100_DownpointFP(@FpStr, BakNo[i], pchar(IpStr), 5101);
// ret_Flag := FP100_DownpointFP_ASC(@FpStr[0],1,pchar(IpStr),5101);
ret_Flag := FP100_DownpointFP_ASC(@FpStr, 1, pchar(IpStr), Port);
ccrun.com 2011-08-24
  • 打赏
  • 举报
回复
不懂没关系,有代码可以贴出来看看。
tianlu123 2011-08-24
  • 打赏
  • 举报
回复
他们用DELPHI,因为我不懂DELPHI,
ccrun.com 2011-08-24
  • 打赏
  • 举报
回复
他是如何调用的,可有代码?
tianlu123 2011-08-24
  • 打赏
  • 举报
回复
没用,主要是我同事调用我动态库出现这个问题,我用测试程序写的可以调用该函数并且不出错
ccrun.com 2011-08-24
  • 打赏
  • 举报
回复
Google "cannot access an inactive scope",第一个链接对你是否有用?

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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