1

当我尝试编译我的应用程序时,出现两个错误:

$ 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 transmit.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我的库与它们链接?……

4

1 回答 1

2

您可以在 C 文件中实现它们(而不是由 C 编译器而不是 C++ 编译器编译),或者在 C++ 文件中实现它们,然后给出 extern "C" 链接。例如:

extern "C" double log(double x)
{
    // ...
}

显然,解决链接问题对您来说会更好。您不必提供自己的标准 C 库例程版本。

于 2012-10-25T00:35:47.667 回答