【问题标题】:Data Read method not working properly when called through C#通过 C# 调用时数据读取方法无法正常工作
【发布时间】: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 和结构指针作为成员,但无法正确读取。可能有什么问题?

【问题讨论】:

    标签: c# c++-cli unmanaged


    【解决方案1】:

    解决方案是将C/C++ &gt; Code Generation 下的Struct Member Alignment property 从1byte 1 byte /Zp1 更改为Default。很简单。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-10
      相关资源
      最近更新 更多