Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Динамически загрузить библиотеку и передать указатель на функции
|
|||
|---|---|---|---|
|
#18+
Добрый день, коллеги! Есть задача в C# загрузить библиотеку (С++) и передать в нее класс с указателями на функции (callback). Все написал, все передается, но почему то указатели на ф-ции в библиотеке пропадают. С кодом будет понятнее C# Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. С++ Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. Указатель на функцию ptr_interface->set_camera_rate_abs() "живет" до тех пор, пока не вышли из метода load_plugin . После выхода адрес ptr_interface тот же, а вот указатель на функцию изменяется на "мусор" . При этом в программе на С# все адреса те же. Если я в методе load_plugin() при создании объекта new PluginAdapter(*ptr_interface); передаю не указатель на объект, а сам объект, то программа работает корректно. Помогите пожалуйста, мне надо передавать указатель на объкт и что бы указатели на ф-ции не умирали. Спасибо!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2016, 17:22 |
|
||
|
Динамически загрузить библиотеку и передать указатель на функции
|
|||
|---|---|---|---|
|
#18+
bdm77Добрый день, коллеги! Есть задача в C# загрузить библиотеку (С++) и передать в нее класс с указателями на функции (callback). ..... могу ошибаться(давно было дело), но Вам нужно анмэнэджет код позвать анмэнэджет кодом. Т.е. под си бимолем делаете си плас пласный код обёртку который будет это всё делать(звать функцию). Термин "время жизни" понимать. И маршалинг делать средствами си бимоля(так быстрее). (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2016, 14:58 |
|
||
|
Динамически загрузить библиотеку и передать указатель на функции
|
|||
|---|---|---|---|
|
#18+
kolobok0могу ошибаться никаких обёрток, c# маршаллер без особых хлопот коллбэки позволяет сделать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2016, 15:22 |
|
||
|
Динамически загрузить библиотеку и передать указатель на функции
|
|||
|---|---|---|---|
|
#18+
Изопропилkolobok0могу ошибаться никаких обёрток, c# маршаллер без особых хлопот коллбэки позволяет сделать c# маршаллер отлично работает, но куда деваются указатели, после выхода из метода load_plugin . Я знаю что такое время жизни переменной, но тут уже начал в этом сомневаться.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2016, 16:59 |
|
||
|
Динамически загрузить библиотеку и передать указатель на функции
|
|||
|---|---|---|---|
|
#18+
bdm77, Фикировать в паияти нужно структуры данных пеоедаваемые в неупраляемый код при необходимости ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2016, 18:26 |
|
||
|
Динамически загрузить библиотеку и передать указатель на функции
|
|||
|---|---|---|---|
|
#18+
Изопропил, Прочитал, что нужно копировать полученный объект: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Все работает!! "Фикировать в паияти нужно структуры данных пеоедаваемые в неупраляемый код при необходимости" - чем можно ее фикировать?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2016, 10:11 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39176601&tid=2018602]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 160ms |

| 0 / 0 |
