Оболочка в неуправляемый код - PullRequest
0 голосов
/ 09 февраля 2011

Как бы вы создали оболочку для неуправляемого кода, чтобы использовать ее в управляемом коде, и когда именно вы должны это сделать?

1 Ответ

2 голосов
/ 10 февраля 2011

Вам часто не требуется оболочка, многие DLL с экспортированными прямыми функциями C могут быть вызваны с помощью атрибута [DllImport].Исключением для экспорта на C будет плохо спроектированная DLL, которая требует от клиентского кода освобождения памяти, чего не может сделать управляемый код, так как он не имеет доступа к распределителю.у вас есть , чтобы иметь обертку - родной класс C ++.Управляемый код не может напрямую вызывать его, поскольку он не знает, как создать экземпляр класса (который требует знания размера объекта и вызова конструктора) и как его уничтожить (что требует вызова деструктора).Это довольно легко сделать в C ++ / CLI.Очень механический, проект SWIG может сделать это автоматически.Изучение этого инструмента, однако, больше инвестиций, чем обучение написанию оболочки.

...