[Libav-user] Problems with time.h in ffmpeg util libary

Hannes Wuerfel hannes.wuerfel at student.hpi.uni-potsdam.de
Fri Nov 23 00:25:49 CET 2012


Am 22.11.2012 23:52, schrieb Carl Eugen Hoyos:
> Hannes Wuerfel <hannes.wuerfel at ...> writes:
>
>> is there a workaround to avoid name conflicts with
>> the standard c time.h file?
>> It is a problem when using some other libs in
>> the project where ffmpeg is used.
> Could you elaborate?
> (So far, nobody could explain how this can be a
> problem.)
>
> Carl Eugen
>
> _______________________________________________
> Libav-user mailing list
> Libav-user at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/libav-user
For example:

// ffmpeg
extern "C" {
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libswscale/swscale.h>
#include <libavutil/opt.h>
#include <libavutil/audioconvert.h>
#include <libavutil/common.h>
#include <libavutil/imgutils.h>
#include <libavutil/mathematics.h>
#include <libavutil/samplefmt.h>
}

// opencv
#include <cv.h>
#include <highgui.h>
#include <cvaux.h>
#include <cxcore.h>

causing:
2>C:\Program Files (x86)\Microsoft Visual Studio 
10.0\VC\include\ctime(18): error C2039: 'clock_t': Ist kein Element von 
'`global namespace''
2>C:\Program Files (x86)\Microsoft Visual Studio 
10.0\VC\include\ctime(18): error C2873: 'clock_t': Das Symbol kann nicht 
in einer using-Deklaration verwendet werden
2>C:\Program Files (x86)\Microsoft Visual Studio 
10.0\VC\include\ctime(20): error C2039: 'asctime': Ist kein Element von 
'`global namespace''
2>C:\Program Files (x86)\Microsoft Visual Studio 
10.0\VC\include\ctime(20): error C2873: 'asctime': Das Symbol kann nicht 
in einer using-Deklaration verwendet werden
2>C:\Program Files (x86)\Microsoft Visual Studio 
10.0\VC\include\ctime(20): error C2039: 'clock': Ist kein Element von 
'`global namespace''
2>C:\Program Files (x86)\Microsoft Visual Studio 
10.0\VC\include\ctime(20): error C2873: 'clock': Das Symbol kann nicht 
in einer using-Deklaration verwendet werden
2>C:\Program Files (x86)\Microsoft Visual Studio 
10.0\VC\include\ctime(20): error C2039: 'ctime': Ist kein Element von 
'`global namespace''
2>C:\Program Files (x86)\Microsoft Visual Studio 
10.0\VC\include\ctime(20): error C2873: 'ctime': Das Symbol kann nicht 
in einer using-Deklaration verwendet werden
2>C:\Program Files (x86)\Microsoft Visual Studio 
10.0\VC\include\ctime(21): error C2039: 'difftime': Ist kein Element von 
'`global namespace''
2>C:\Program Files (x86)\Microsoft Visual Studio 
10.0\VC\include\ctime(21): error C2873: 'difftime': Das Symbol kann 
nicht in einer using-Deklaration verwendet werden
2>C:\Program Files (x86)\Microsoft Visual Studio 
10.0\VC\include\ctime(21): error C2039: 'gmtime': Ist kein Element von 
'`global namespace''
2>C:\Program Files (x86)\Microsoft Visual Studio 
10.0\VC\include\ctime(21): error C2873: 'gmtime': Das Symbol kann nicht 
in einer using-Deklaration verwendet werden
2>C:\Program Files (x86)\Microsoft Visual Studio 
10.0\VC\include\ctime(21): error C2039: 'localtime': Ist kein Element 
von '`global namespace''
2>C:\Program Files (x86)\Microsoft Visual Studio 
10.0\VC\include\ctime(21): error C2873: 'localtime': Das Symbol kann 
nicht in einer using-Deklaration verwendet werden
2>C:\Program Files (x86)\Microsoft Visual Studio 
10.0\VC\include\ctime(22): error C2039: 'mktime': Ist kein Element von 
'`global namespace''
2>C:\Program Files (x86)\Microsoft Visual Studio 
10.0\VC\include\ctime(22): error C2873: 'mktime': Das Symbol kann nicht 
in einer using-Deklaration verwendet werden
2>C:\Program Files (x86)\Microsoft Visual Studio 
10.0\VC\include\ctime(22): error C2039: 'strftime': Ist kein Element von 
'`global namespace''
2>C:\Program Files (x86)\Microsoft Visual Studio 
10.0\VC\include\ctime(22): error C2873: 'strftime': Das Symbol kann 
nicht in einer using-Deklaration verwendet werden
2>C:\Program Files (x86)\Microsoft Visual Studio 
10.0\VC\include\ctime(22): error C2039: 'time': Ist kein Element von 
'`global namespace''
2>C:\Program Files (x86)\Microsoft Visual Studio 
10.0\VC\include\ctime(22): error C2873: 'time': Das Symbol kann nicht in 
einer using-Deklaration verwendet werden
2>d:\lib\opencv_2.4\build\include\opencv2\flann\timer.h(47): error 
C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'startTime'
2>d:\lib\opencv_2.4\build\include\opencv2\flann\timer.h(47): error 
C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: 
"default-int" wird von C++ nicht unterstützt.
2>d:\lib\opencv_2.4\build\include\opencv2\flann\timer.h(47): error 
C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: 
"default-int" wird von C++ nicht unterstützt.
2>d:\lib\opencv_2.4\build\include\opencv2\flann\timer.h(69): error 
C2065: 'startTime': nichtdeklarierter Bezeichner
2>d:\lib\opencv_2.4\build\include\opencv2\flann\timer.h(69): error 
C3861: "clock": Bezeichner wurde nicht gefunden.
2>d:\lib\opencv_2.4\build\include\opencv2\flann\timer.h(77): error 
C2065: 'clock_t': nichtdeklarierter Bezeichner
2>d:\lib\opencv_2.4\build\include\opencv2\flann\timer.h(77): error 
C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'stopTime'
2>d:\lib\opencv_2.4\build\include\opencv2\flann\timer.h(77): error 
C2065: 'stopTime': nichtdeklarierter Bezeichner
2>d:\lib\opencv_2.4\build\include\opencv2\flann\timer.h(77): error 
C3861: "clock": Bezeichner wurde nicht gefunden.
2>d:\lib\opencv_2.4\build\include\opencv2\flann\timer.h(78): error 
C2065: 'stopTime': nichtdeklarierter Bezeichner
2>d:\lib\opencv_2.4\build\include\opencv2\flann\timer.h(78): error 
C2065: 'startTime': nichtdeklarierter Bezeichner
2>d:\lib\opencv_2.4\build\include\opencv2\flann\timer.h(78): error 
C2065: 'CLOCKS_PER_SEC': nichtdeklarierter Bezeichner

opencv2's timer.h includes <time.h>

Strange:
When I just code:

// ffmpeg
extern "C" {
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libswscale/swscale.h>
#include <libavutil/opt.h>
#include <libavutil/audioconvert.h>
#include <libavutil/common.h>
#include <libavutil/imgutils.h>
#include <libavutil/mathematics.h>
#include <libavutil/samplefmt.h>
}
#include <time.h>

it works fine, but using <ctime> instead causing the same VC errors as 
above.



More information about the Libav-user mailing list