У меня есть код на C++, который зависит от библиотеки libuv (код C). Это из-за segfault. Я сузил проблему: libuv использует struct stat
от <sys/stat.h>
. Если я печатаю размер этой структуры в моем коде:GCC - точное местоположение объявления типа
printf("struct stat size: %d\n", sizeof(struct stat));
это показывает 88. Если я печатаю то же самое в библиотеке libuv, он показывает 96. Это причина Segfault. Я немного застрял здесь. Как найти точное местоположение объявления типа? Любой другой подход к решению этой проблемы?
Вы являетесь причиной _sure_? Вы пытались запустить вашу программу в отладчике и изучить стек вызовов? Вы должны сделать это сначала. –
Вы сами создали 'libuv' или используете предварительно скомпилированный бинарный файл? –
Несмотря на то, что структура stat имеет разный размер в зависимости от определенных функций posix, это обычно не имеет значения, если вы передаете такую структуру только внутри кода, который использует то же определение. Поэтому, если вы не обмениваетесь такой структурой с libuv, тогда виновник, скорее всего, находится в другом месте. И если вы это сделаете, вы должны установить те же самые определения, что и они (еще лучше было бы установить правильные определения, которые могут работать, если вы сначала включите их заголовок) – PlasmaHH