Как экспортировать определение структуры из нативного C .dll для использования в C # - PullRequest
4 голосов
/ 15 мая 2009

Я знаю, как extern-методы в .dll, как мне extern Structs?

Я хочу создать метод C, например

extern __declspec(dllexport) myStructure getStruct();

где myStructure - что-то вроде

typedef struct
{
   int A;
   int B;
   char C;
} myStructure;

Как я могу вызвать getStruct () из куска кода C # без предварительного определения той же самой точной структуры в C #? Я хочу сохранить централизованную декларацию myStructure, чтобы мне приходилось вносить изменения в код только в одном месте.

Спасибо большое!

Ответы [ 2 ]

3 голосов
/ 15 мая 2009

А как по-другому? Определите структуру в C # в T4 , а затем перейдите к новому формату в каждом из проектов:

т. base.tt

// C # определение структуры

в gencsharp.tt в проекте C # включить "base.tt" ... вывести C #

в gencplusplus.tt в проекте CPP включить "base.tt" ... используйте C # для генерации файла cpp .h

1 голос
/ 15 мая 2009

Я сделал немного P / Invoke с C #, и мне всегда приходилось определять структуры в C #, которые по определению соответствуют структуре Win32. Среда выполнения использует определение структуры для перенаправления данных из неуправляемых в управляемые. Ответ Прита, вероятно, самый лучший.

...