#ifdef MAIL_EXPORTS
#define MAIL_API extern "C" __declspec(dllexport)
#else
#define MAIL_API extern "C" __declspec(dllimport)
#endif
MAIL_API char* CALLBACK GetFlag(int index ,char *path,char* value)
{
char *ret=value;
FILE* fmail;
fmail=fopen(path,"r");//打开文件

fseek(fmail,(index-1)*1000+10,SEEK_SET);
fread(ret,sizeof(char),10,fmail);
fclose(fmail);
return  ret;
}我在VC中写了好几个读写文件的函数,fputs,fgets,fread,fwrite 等等都试过了,在VC下调用运行一切正常,可是VB调用后怎么也得不到正确结果.上面写的是其中一个例子,单独在一个VC项目中编译好给VB调用也通不过.有谁写过这种程序,帮帮我.领导明天一定要我交货.(帮我解决了问题的人如果在杭州,我请他吃饭)

解决方案 »

  1.   

    顺便提一下,path是文件路径,value是返回值,index是序列号就指定为1吧
    文件结构是个记录文件,1000字节为一条记录,ANSI储存,格式如下:10个字节的序列号,10个字节的标志位,后面无所谓了...
    1\n
    N\n
    dffdfdfdfggf\n
    fdfdgfghghgjhjh\n
    ....
      

  2.   

    应该用.def文件说明,查找一下帖子吧,好像有。
      

  3.   

    在vb中显式调用在.def文件中声明一下导出函数,
      

  4.   

    我以前写过一个,也被折磨半天
    包含CALLBACK 函数的时候,一定要用.def声明的,其他的方法不灵
      

  5.   

    可能是参数或者返回值在vb 中声明中搞错了吧,注意byval,byref
      

  6.   

    这些我都做到了,估计是fread不好用吧