Я написал dll в C, в котором есть функции, которые я могу вызывать при обращении к DLL в C#. Если я использую тип basi c, например int, он работает нормально, но у меня есть структуры, которые немного отличаются в C# от C из-за языковых различий. Вот пример. Это определение функции в C#:
[DllImport("hello_world_cuda.dll", CharSet = CharSet.Auto)]
public static extern Batch Cut();
А вот оно в C:
extern "C" Batch __declspec(dllexport) __stdcall Cut()
Вы можете видеть, что тип возврата Batch такой же, но здесь это его определение в C#
class Envelope
{
public byte[] Payload;
public byte[] Signature;
}
class Batch
{
public Envelope[] Messages;
public int MsgCount;
}
А вот определение в C
struct Envelope
{
public:
char* Payload;
char* Signature;
};
struct Batch
{
public:
Envelope* Messages;
int MsgCount;
};
Как мне преодолеть эти языковые различия, чтобы успешно выполнить вызов DLL в C#?