Как я могу отправить управляемый объект собственной функции, чтобы использовать его?

StackOverflow https://stackoverflow.com/questions/7371775

Вопрос

Как я могу отправить управляемый объект собственной функции, чтобы использовать его?

родовое слово
Это было полезно?

Решение 2

Поиграв в Google, прочитав MSDN и попробовав несколько кодов, я нашел этот метод для передачи управляемого объекта неуправляемой функции.

Эти методы показывают, как преобразовать Object ^ в void * и преобразовать void * в Object ^.

родовое слово

Примечание: если unmanaged_function имеет переменные аргументы, этот метод работать не будет.

Другие советы

Более чистый и лучший подход - использовать gcroot .

Цитата из MSDN Как: объявить дескрипторыв собственных типах :

<цитата>

Шаблон gcroot реализован с использованием возможностей класса значений System :: Runtime :: InteropServices :: GCHandle, который предоставляет «дескрипторы» к куче со сборкой мусора.Обратите внимание, что сами дескрипторы не собираются сборщиком мусора и освобождаются, когда они больше не используются деструктором в классе gcroot (этот деструктор нельзя вызвать вручную).Если вы создаете экземпляр объекта gcroot в собственной куче, вы должны вызвать delete для этого ресурса.

Ваш пример кода адаптирован для использования gcroot (код компилируется и запускается с использованием VS 2010):

родовое слово
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top