怎么将文件作为函数的参数???

wdw1985 2011-08-01 03:00:29
下面是我做的DLL里面的一个函数



void readF(FILE *fp,int flag,int frameN)//frameN为每帧字节数
{
unsigned char *p,R,G,B;
int i,j;

FILE *fp1;
FILE *fp2;

if (flag > 3)return;

switch(flag)
{
case 0:lpDDSOne -> Lock(NULL,&Sddsd1,DDLOCK_WAIT,NULL);break;
case 1:lpDDSTwo -> Lock(NULL,&Sddsd2,DDLOCK_WAIT,NULL);break;
case 2:lpDDSThr -> Lock(NULL,&Sddsd3,DDLOCK_WAIT,NULL);break;
case 3:lpDDSFour -> Lock(NULL,&Sddsd4,DDLOCK_WAIT,NULL);break;
}

switch(flag)
{
case 0:p = (unsigned char*)Sddsd1.lpSurface;break;
case 1:p = (unsigned char*)Sddsd2.lpSurface;break;
case 2:p = (unsigned char*)Sddsd3.lpSurface;break;
case 3:p = (unsigned char*)Sddsd4.lpSurface;break;
}


fread(p,frameN,1,fp);*****************************************************************


j = frameN/3-1;
for (i=0;i<(frameN/3-1);i++)
{
R = *(p+j*3+0);
G = *(p+j*3+1);
B = *(p+j*3+2);
*(p+j*4+0) = B;
*(p+j*4+1) = G;
*(p+j*4+2) = R;
*(p+j*4+3) = 0;
j--;
}

switch(flag)
{
case 0:lpDDSOne -> Unlock(NULL);break;
case 1:lpDDSTwo -> Unlock(NULL);break;
case 2:lpDDSThr -> Unlock(NULL);break;
case 3:lpDDSFour -> Unlock(NULL);break;
}

return;
}




下面是我主函数里调用的方法

readF((FILE *)fp,count1,307200); //1280*800*24/8

但是这个总是调用不成功,错误内存不能为read。。。。

请高手给指点一下
...全文
243 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yiyefangzhou24 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ouyh12345 的回复:]
传文件的路径
[/Quote]
++
awen12345678 2011-08-01
  • 打赏
  • 举报
回复
封装一下 只要保证 对 FILE* 操作由同一个 DLL 提供的函数来完成即可。也就是将 fread, fwrite, fopen, fclose 之类的函数封装一下即可。
ouyh12345 2011-08-01
  • 打赏
  • 举报
回复
传文件的路径
wdw1985 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 awen12345678 的回复:]
FILE* fp, 跨 DLL 传递,貌似不能使用的。
[/Quote]

那这种情况该怎么办呢

我需要在dll里面用一个做参数
wdw1985 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ouyh12345 的回复:]
错误内存不能为read。。。。

单步跟踪一下
[/Quote]

这个不是read的问题,是*fp根本就传不过来。
ouyh12345 2011-08-01
  • 打赏
  • 举报
回复
错误内存不能为read。。。。

单步跟踪一下
awen12345678 2011-08-01
  • 打赏
  • 举报
回复
FILE* fp, 跨 DLL 传递,貌似不能使用的。
wdw1985 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 akirya 的回复:]
调用的时候fp那来的?
[/Quote]

调用的时候自己定义了一个fp
  • 打赏
  • 举报
回复
调用的时候fp那来的?

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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