如何将c代码转换为vb.net

时间:2016-01-30 06:11:38

标签: c vb.net

我正在编写VB.net并需要调用API(c语言DLL)

我的测试示例代码如下

//Read Source File
char *SourceFilePath = "C:\\Docs\\Scandi\\attach\\verifyTest\\center.xml";
FILE *sourcefile= fopen(SourceFilePath, "rb");
if (!sourcefile)
{
    printf("Error=%s\n", *SourceFilePath);
    return;
}

fseek(sourcefile,0,SEEK_END);
long src_ch_len  = ftell(sourcefile);
rewind(sourcefile);
unsigned char *src_ch =(unsigned char*)malloc(sizeof(char)*src_ch_len); 
result = fread(src_ch,1,src_ch_len,sourcefile);
if(result!=src_ch_len)
{ 
    printf("Reading Error=%s\n", *sourcefile);
    return; 
}

fclose(sourcefile);

//Read Data File
//Skip...

rc = BasicVerify(algorithm, data, dataLen, key, signature, signatureLen); 

API函数定义

unsigned long verify(unsigned long algorithm, unsigned char *data, int dataLen,unsigned char *signature, int signatureLen, char *cerFile)

如何将fopen(SourceFilePath," rb")和fread(src_ch,1,src_ch_len,sourcefile)转换为VB.NET

由于

1 个答案:

答案 0 :(得分:1)

使用the FileStream class模式,使用VB .NET中fopen模式的模拟"rb"似乎是FileAccess.Read。从那里,您可以使用FileStream.Read method作为fread的模拟。例如:

dim sourceFile as FileStream
sourceFile = new FileStream("C:\\Docs\\Scandi\\attach\\verifyTest\\center.xml", FileAccess.Read)

dim result as Integer
result = sourceFile.Read(array, 0, array.Length)

但是,从C代码中的fseek后跟ftell来看,您希望将整个文件读入内存。这通常是不受欢迎的,因为文件大小可能是几千兆字节。如果您确实想这样做,请使用File.ReadAllBytes方法,例如:

dim src_ch as Byte()
src_ch = File.ReadAllBytes("C:\\Docs\\Scandi\\attach\\verifyTest\\center.xml")