Когда я пытаюсь скомпилировать свое приложение, я получаю две ошибки:
$ g ++ -static -emit-swf -o CloudClient.swf -I ../ boost / boost_libraries / install-dir / include -I ../ ffm
peg-1.0 / bin / include -L ../ boost / boost_libraries / install-dir / lib -L ../ ffmpeg-1.0 / bin / lib timer.o
audio_encoder.o audio_generator.o video_encoder.o video_generator_rainbow.o sim
ple_synchronizer.o multiplexer.o передатчик.o graph_runner.o cloud_client.o -lswscale -lavformat -lavcodec -lavutil -lboost_system -lboost_date_time -lboost_thread -pthread -lm
../ffmpeg-1.0/bin/lib/libswscale.a: error: undefined reference to 'exp'
../ffmpeg-1.0/bin/lib/libavcodec.a: error: undefined reference to 'log'
collect2: ld returned 1 exit status
Если log
а также exp
мои проблемы, и если я положу -lm
это не помогает мне задаться вопросом, как буквально создавать свои собственные заглушки вместо exp
а также log
и связать мои библиотеки с ними? ….
Вы могли бы реализовать их в файле C (который компилируется компилятором C, а не компилятором C ++) или в файле C ++, а затем получить внешнюю связь «C». Например:
extern "C" double log(double x)
{
// ...
}
Очевидно, что было бы лучше решить проблему со связью. Вы не должны предоставлять свои собственные версии стандартных подпрограмм библиотеки C.
Других решений пока нет …