Мне дали DLL ("InfoLookup.dll"), которая внутренне распределяет структуры и возвращает на них указатели из функции поиска. Структуры содержат строковые указатели:
extern "C"
{
struct Info
{
int id;
char* szName;
};
Info* LookupInfo( int id );
}
В C # как я могу объявить структуру структуры, объявить вызов Interop и (при условии, что возвращается ненулевое значение) использовать строковое значение? Другими словами, как мне перевести следующее на C #?
#include "InfoLookup.h"
void foo()
{
Info* info = LookupInfo( 0 );
if( info != 0 && info->szName != 0 )
DoSomethingWith( info->szName );
// NOTE: no cleanup here, the DLL is caching the lookup table internally
}