libx264, скомпилированный с MinGW - отсутствуют __umoddi3, __udivdi3, _fseeko64 и __chkstk_ms

Я хочу использовать x264 в своем проекте Windows, поэтому я собрал библиотеку из исходного кода, используя MinGW и gcc, в статическую библиотеку.

Библиотека и шапка включены корректно, проблема только в том, что линкер теперь ругается, т.к. __umoddi3, __udivdi3, _fseeko64 и __chkstk_ms. Похоже, что эти функции являются частью какой-то стандартной библиотеки, но где я могу найти их в Windows?

Спасибо.


person Dan Tumaykin    schedule 31.01.2014    source источник
comment
вы можете попробовать -lgcc во время компиляции/связывания?   -  person 72DFBF5B A0DF5BE9    schedule 31.01.2014
comment
Да без разницы, к сожалению.   -  person Dan Tumaykin    schedule 31.01.2014
comment
извините, а как насчет -lmsvcrt -lgcc ?   -  person 72DFBF5B A0DF5BE9    schedule 31.01.2014
comment
Попробуйте включить их в свой make-файл: LDFLAGS: -lmingwex -lmingw32 CFLAGS: -fno-stack-check -fno-stack-protector -mno-stack-arg-probe   -  person 72DFBF5B A0DF5BE9    schedule 31.01.2014
comment
gcc не может распознать флаг -mno-stack-arg-prob. В любом случае без него я получаю ту же ошибку компоновщика из Visual Studio. Можно ли вообще использовать x264 в качестве статической библиотеки внутри проекта Windows?   -  person Dan Tumaykin    schedule 31.01.2014
comment
Вы получаете эти ошибки, когда компилируете статическую библиотеку с одним компилятором/средой выполнения и пытаетесь использовать ее в другом компиляторе/среде выполнения. Это то, что вы делаете?   -  person David Heffernan    schedule 31.01.2014
comment
Точно, мне нужны статические библиотеки x264 в моем проекте Visual Studio.   -  person Dan Tumaykin    schedule 31.01.2014


Ответы (2)


Я бы не стал копировать/вставлять здесь полный ответ, но вы должны прочитать эту тему на doom10.org Короче говоря, вы не можете напрямую использовать скомпилированные MinGW библиотеки .a (статические или общие) в MSVS. Вам нужно скомпилировать libx264.dll и создать специальную библиотеку .lib для MSVS из файла .def, а затем использовать эту библиотеку для компоновки.

person nobody555    schedule 31.01.2014
comment
@David x264 не может быть скомпилирован в MSVS, потому что его компилятор C не полностью поддерживает C99. Так что это не тот вариант. Вам потребуется компилятор Intel C (ICL) для компиляции в MSVS или перезаписи частей x264, использующих функции C99. - person nobody555; 01.02.2014

Вы скомпилировали статическую библиотеку в MinGW и пытаетесь использовать ее в Visual Studio. Это не работает. Чтобы использовать статическую библиотеку, она должна быть скомпилирована тем же компилятором и в той же среде выполнения, что и программа, которая ее использует.

Если вы настроены использовать это как статическую библиотеку, вы должны скомпилировать исходный код x264 в Visual Studio.

person David Heffernan    schedule 31.01.2014