当我尝试编译我的应用时,我收到两个错误:
$ 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 transmitter.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
和{{ 1}}并将我的libs与它们链接起来? ....
答案 0 :(得分:2)
您将在C文件中实现它们(而不是由C编译器编译,而不是由C ++编译器编译),或者在C ++文件中实现它们,然后给出extern“C”链接。例如:
extern "C" double log(double x)
{
// ...
}
显然,解决链接问题会更好。您不必提供自己的标准C库例程版本。