请教一个关于DLL的问题!!
我有一个C++写的DLL,在DLL中生成一个文件,现在我想把这个文件的内容通过UDP方式发送给网络,
我想通过一个DLL函数返回一个指针,但是不成功!
DLL中的函数:
long APIENTRY GetCondition(FILE *file_name )
{
FILE *fp;
char str[256];
fp=new FILE();
sprintf(str,"%U",file_name);
unsigned char sp[4];
sp[0] = ((unsigned char)(int('i')|0x99)); // i | 1001,1001 B
sp[1] = ((unsigned char)(int('c')|0x18)); // c | 0001,1000 B
sp[2] = ((unsigned char)(int('w')|0x18)); // w | 0001,1000 B
sp[3] = ((unsigned char)(int('k')|0x99)); // k | 1001,1001 B
fwrite(sp, 1, 4, fp);
long BlockCount=0, ValueCount=0;
BlockCount = block_table->GetSize();
for( int i=0; i<block_table->GetSize(); i++ )
ValueCount += (*block_table)[i]->pAlg->out_cnt + (*block_table)[i]->pAlg->in_cnt;
fwrite (&BlockCount, 4, 1, fp);
fwrite (&ValueCount, 4, 1, fp);
sprintf(str,"BlockCount=%d ValueCount=%d", BlockCount,ValueCount);
LoggerOut( str );
long BlockSize;
char *tBuf,*tPit;
int j;
for( i=0; i<BlockCount; i++ )
{
BlockSize = BLOCKNAME_LEN // Ä£¿éÃû
+4 // ÊäÈë¸öÊý
+4 // Êä³ö¸öÊý
+(*block_table)[i]->pAlg->in_cnt * 4 // ¸÷ÊäÈëÊýÖµ
+(*block_table)[i]->pAlg->out_cnt * 4; // ¸÷Êä³öÊýÖµ
fwrite (&BlockSize, 4, 1, fp); // this block length
tBuf = new char[BlockSize];
tPit = tBuf;
memmove(tPit,(*block_table)[i]->block_name, BLOCKNAME_LEN);
tPit += BLOCKNAME_LEN;
*((int*)tPit) = (*block_table)[i]->pAlg->in_cnt;
tPit += 4;
*((int*)tPit) = (*block_table)[i]->pAlg->out_cnt;
tPit += 4;
for(j=0; j<(*block_table)[i]->pAlg->in_cnt; j++)
{
*((float*)tPit) = (*block_table)[i]->ppInput[j]->a;
tPit += 4;
}
for(j=0; j<(*block_table)[i]->pAlg->out_cnt; j++)
{
*((float*)tPit) = (*block_table)[i]->ppOutput[j]->a;
tPit += 4;
}
fwrite(tBuf, BlockSize, 1, fp);
delete tBuf;
}
file_name=fp;
sprintf(str,"%u",file_name);
MessageBox(NULL,str,NULL,NULL);
return 1;
}
本来这个函数是用来保存磁盘用的,我把它改造一下,准备让它返回指针给BCB;
BCB代码:
FILE * con;
char *buf;
con=fopen("temp.con","w+");
GetCondition(con);
fread(buf,1000,1,con);
Memo1->Text = buf;
得不到这个文件指针;
请教大虾,这样的问题怎么解决,如果要用UDP进行通讯的话,该怎么做最好,请指点!!!!