|
Передать массив байтов из DLL С++ в С#
|
|||
---|---|---|---|
#18+
Добрый день! У меня есть бибилиотека на С++ которая работает с камерой. Мне нужно передать bitmap из библиотеки в программу на С# . Код: 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.
Код: 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. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64.
После вызова фунции GetFrame(ref frame_data res) получаю результат: res.data[0] = 0-255 ; каждый раз разное res.size_farme.x = 10; res.size_farme.y = 10; Помогите пожалуйста разобраться. Два дня пытаюсь решить.. Заранее спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2017, 15:17 |
|
Передать массив байтов из DLL С++ в С#
|
|||
---|---|---|---|
#18+
bdm77 Код: c# 1.
Ты выделяешь память в неуправляемом коде и возвращаешь указатель в управляемый код. В таком случае управляемый код не сможет освободить выделенную память. Нужно или изменить подход, или добавить в неуправляемый код метод, освобождающий память вызовом free(). Когда определишься со способом выделения память под массив будет о чём поговорить. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2017, 05:18 |
|
Передать массив байтов из DLL С++ в С#
|
|||
---|---|---|---|
#18+
Алексей Кbdm77 Код: c# 1.
Ты выделяешь память в неуправляемом коде и возвращаешь указатель в управляемый код. В таком случае управляемый код не сможет освободить выделенную память. Нужно или изменить подход, или добавить в неуправляемый код метод, освобождающий память вызовом free(). Когда определишься со способом выделения память под массив будет о чём поговорить. Есть метод : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2017, 08:35 |
|
Передать массив байтов из DLL С++ в С#
|
|||
---|---|---|---|
#18+
bdm77Есть метод : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
Так должно быть: Код: c# 1. 2. 3. 4. 5.
Далее описываем массив как IntPtr и пользуемся Marshal.Copy , на первый взгляд без копирования массива здесь не обойтись. Попутно рекомендую изучить StructLayoutAttribute и DllImportAttribute , ну и вообще почитать статьи про Platform Invoke в .Net. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2017, 09:34 |
|
Передать массив байтов из DLL С++ в С#
|
|||
---|---|---|---|
#18+
[quot Алексей К][quot bdm77]Есть метод : Код: plaintext 1. 2. 3. 4. 5. 6.
разумеется так!! почитаю.. спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2017, 11:56 |
|
Передать массив байтов из DLL С++ в С#
|
|||
---|---|---|---|
#18+
Алексей К, Спасибо. Разобрался.. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2017, 08:26 |
|
|
start [/forum/topic.php?fid=20&fpage=40&tid=1399726]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 316ms |
total: | 462ms |
0 / 0 |