【发布时间】:2011-08-26 18:12:15
【问题描述】:
我有一个非托管 dll,其中包含从文件中读取数据的函数。我为它写了一个 CLI 包装器。
为了测试它是否正常工作,我编写了一个简单的 CLI 程序,调用包装类和数据读取方法。效果很好。
我在 c# 程序中使用了该 dll,但数据未正确读取。它读取但读取的数据不正确。
CLI 函数:
void FileReader::ReadFile()
{
int ret;
STRUCT head;
STRUCT1 *sqar;
memset ( ( void * )&head, 0, sizeof ( STRUCT) );
sqar = ( STRUCT1 * )NULL;
ret = Read_func( "somefile.someformat", &head, &sqar );
}
CLI EXE:
int main(array<System::String ^> ^args)
{
FileReader reader;
reader.ReadFile();
Console::WriteLine(L"Hello World");
return 0;
}
这很好用。当我调试时,代码流过并正确读取数据。
C#代码:
{
FileReader filereader= new FileReader ();
filereader.ReadFile();
}
当我在 C# 项目中导入 CLI dll 并访问上述代码时,无法正确读取数据。
STRUCT 有 int 作为成员,并且可以正确读取。STRUCT1 有 int、double 和结构指针作为成员,但无法正确读取。可能有什么问题?
【问题讨论】: