Метод чтения данных не работает должным образом при вызове через C # - PullRequest
0 голосов
/ 19 августа 2011

У меня есть неуправляемая DLL, которая содержит функцию для чтения данных из файла.Я написал оболочку CLI для этого.

Чтобы проверить, работает ли он, я написал простую CLI-программу, вызывающую класс-оболочку и метод чтения данных.Он работал нормально.

Я использовал эту DLL в программе AC #, но данные не читаются должным образом.Он читает, но данные считываются неверно.

Функция 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();

}

Когда я импортирую DLL CLI в проект C # и получаю доступ к коду, как указано выше, к даннымв не читается правильно.

STRUCT имеет int как члены, и он читается правильно. STRUCT1 имеет int, double и struct указатели как члены, которые не читаются должным образом.Что может быть не так?

1 Ответ

0 голосов
/ 26 августа 2011

Решение было изменить Struct Member Alignment property в C/C++ > Code Generation с 1 байта 1 byte /Zp1 на Default. Простой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...