.NET Marshaler: хорошая документация? - PullRequest
1 голос
/ 20 августа 2009

В настоящее время я работаю над кодом C #, который вызывает пользовательскую, собственную dll. При маршалинге данных обратно в C # мне нужно явно выровнять поля классов / структур, используемых для маршалинга. У меня был ряд проблем с этим из-за неполного понимания маршалера и его правил. Например, я недавно через вопрос SO узнал, что маршалер требует, чтобы массивы были выровнены по DWORD. Если бы я знал это раньше, это избавило бы меня от головной боли.

У меня вопрос двоякий:

1) Есть ли хорошая документация для маршалера, предоставляющая этот тип информации?

2) Какие еще подобные ограничения я должен знать? (Например, все поля размера DWORD должны быть выровнены по DWORD)?

Ответы [ 2 ]

2 голосов
/ 20 августа 2009

Существует полезный инструмент для генерации подписей pinvoke для данной библиотеки. Он имеет ярлыки для Win32 API, но вы можете передать свои собственные файлы.

pinvoke interop assistant

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

На сайте codeplex , похоже, есть несколько полезных диагностических инструментов, которые я собираюсь использовать.

1 голос
/ 20 августа 2009

http://pinvoke.net содержит много полезной информации, включая точные инструкции по сортировке для многих (большинства?) Стандартных функций win32, а также многих других. Он основан на вики, поэтому, когда вы выясняете новые библиотеки или сбои существующих, вы можете добавить их.

...