beldmit: (Программизм)
[personal profile] beldmit
Наступил на грабли. gcc и g++ дают разный размер довольно развесистой структуры, используемой в сишной и плюсовой библиотеках.

Можно ли малой кровью их привести к единому знаменателю? С-шная библиотека не наша, плюсовая наша.

Вроде бы везде стоят флаги
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

Опцию -fpack-struct пробовал, не преуспел.

Update: разные опции сборки базовой и производной библиотек.

Date: 2019-07-11 09:34 pm (UTC)
From: [personal profile] being_no_one
Первое, что хочется проверить: а нет ли в коде этой развесистой структуры пар ifdef-endif?
Если нет, то я бы всё-таки вначале понял, где именно возникает расхождение - тупо получил от C-библиотеки структуру с известными полями и посмотрел в памяти. Потому что понятно что стандарт двоичной совместимости не гарантирует, но практически расхождение странное, я бы сомневался в точности диагноза. Опять же, если понять какой тип вызывает проблемы, может получиться обойтись малой кровью.

Profile

beldmit: (Default)
Dmitry Belyavskiy

December 2025

S M T W T F S
 123456
78910111213
14151617181920
2122 2324252627
28293031   

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 28th, 2025 03:20 am
Powered by Dreamwidth Studios