|
Портирование структуры C++ -> C#
|
|||
---|---|---|---|
#18+
Добрый день! Есть у меня на плюсах такая вот штука: Код: 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.
Мне надо её перевести в шарп. У меня получилось примерно следующее: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Всё бы было хорошо, но при попытке получить размер структуры (int size = Marshal.SizeOf(t);) я получаю ошибку: "Невозможно упаковать тип "Tester.Form1+TPackage_TenzoM_Ver643" как неуправляемую структуру; невозможно вычислить размер или смещение, имеющие смысл." По структуре размер у меня должен быть 9. COP - 1 байт DATA - массив из 7 байт LStruct - 1 байт Как мне исправить это дело? Я пытался задавать [StructLayout(LayoutKind.Sequential)], т.е.: Код: 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.
Тогда при самом старте приложения я получаю: Не удалось загрузить тип "TPackage_TenzoM_Ver643" из сборки "Tester, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null", так как он содержит поле объекта со смещением 1, которое неверно выровнено или перекрыто полем, не представляющим объект. Помогите, пожалуйста, выровнять/настроить/сделать/сколотить/нуиличтотамещё эту структуру. На выходе мне нужен размер в 9 байт. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2015, 12:53 |
|
Портирование структуры C++ -> C#
|
|||
---|---|---|---|
#18+
Алексей Ку., тип char занимает 2 байта, а значит поле COP будет перекрывать поле Data. Попробуй указать: Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.03.2015, 12:28 |
|
Портирование структуры C++ -> C#
|
|||
---|---|---|---|
#18+
Александр Витер, Не помогло. Получаю ошибку "Невозможно упаковать тип "Tester.Form1+TPackage_TenzoM_Ver643" как неуправляемую структуру; невозможно вычислить размер или смещение, имеющие смысл." при попытке получить раззмер структуры. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 16:07 |
|
Портирование структуры C++ -> C#
|
|||
---|---|---|---|
#18+
Обратил внимание - так там содержатся классы, т. е. управляемые указатели BitArray и, похоже, char[]. Замените на bool*, char* (или byte*) или IntPtr, но классов быть не должно, если используется marshaling в неуправляемую память. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2015, 16:57 |
|
|
start [/forum/topic.php?fid=20&msg=38901534&tid=1401813]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 128ms |
0 / 0 |