[Live-devel] Unusual H264VideoStreamDiscreteFramer Compile Error

Alexander Stevens alexander.stevens at uqconnect.edu.au
Sat Aug 27 19:00:56 PDT 2011


Haha, yeah, I got a kind email from my supervisor pointing out my
embarrassing little mistake... Cheers though Ross!

Unfortunately, I've hit yet again another snag... Even though I'm
linking to the Live555 libraries, I'm receiving undefined reference
errors galore. Still not sure why though... maybe someone can clarify?

My program is located at the base directory of the live libraries and I
am just pointing to each include directory using -I as shown below and
-L for each library... My machine is running 64 bit Ubuntu 11.04 with G
++ v4.5.2 and have compiled the live555 libraries with the linux-64bit
configuration.

My program is also including the BasicUsageEnvironment.hh, liveMedia.hh,
GroupsockHelper.hh and FramedSource.hh (for my custom DeviceSource
implementation). Once again, my source is here
http://bazaar.launchpad.net/~alex-stevens/+junk/spyPanda/files/33

(Sorry for the massive post)

g++ -Wall -pedantic -g main.c -c
g++ -Wall -pedantic -g v4l2_camera.c -c
g++ -Wall -pedantic -g -I../UsageEnvironment/include
-I../groupsock/include -I../liveMedia/include
-I../BasicUsageEnvironment/include -O2 live555.cpp -c
g++ -Wall -pedantic -g -I../UsageEnvironment/include
-I../groupsock/include -I../liveMedia/include
-I../BasicUsageEnvironment/include -O2 x264EncoderSource.cpp -c
g++ -Wall -pedantic -g -L../UsageEnvironment/libUsageEnvironment.a
-L../groupsock/libgroupsock.a -L../liveMedia/libliveMedia.a
-L../BasicUsageEnvironment/libBasicUsageEnvironment.a -lx264 -lv4l2
-lUsageEnvironment -lBasicUsageEnvironment -lliveMedia -lgroupsock -O2
*.o -o spyPanda
live555.o: In function `play()':
/home/alex/Documents/Thesis/Research/live/spyPanda/live555.cpp:56:
undefined reference to
`H264VideoStreamDiscreteFramer::createNew(UsageEnvironment&,
FramedSource*)'
live555.o: In function `afterPlaying(void*)':
/home/alex/Documents/Thesis/Research/live/spyPanda/live555.cpp:44:
undefined reference to `Medium::close(Medium*)'
live555.o: In function `live555_thread(void*)':
/home/alex/Documents/Thesis/Research/live/spyPanda/live555.cpp:66:
undefined reference to `BasicTaskScheduler::createNew()'
/home/alex/Documents/Thesis/Research/live/spyPanda/live555.cpp:67:
undefined reference to
`BasicUsageEnvironment::createNew(TaskScheduler&)'
/home/alex/Documents/Thesis/Research/live/spyPanda/live555.cpp:71:
undefined reference to `chooseRandomIPv4SSMAddress(UsageEnvironment&)'
/home/alex/Documents/Thesis/Research/live/spyPanda/live555.cpp:77:
undefined reference to `Port::Port(unsigned short)'
/home/alex/Documents/Thesis/Research/live/spyPanda/live555.cpp:78:
undefined reference to `Port::Port(unsigned short)'
/home/alex/Documents/Thesis/Research/live/spyPanda/live555.cpp:80:
undefined reference to `Groupsock::Groupsock(UsageEnvironment&, in_addr
const&, Port, unsigned char)'
/home/alex/Documents/Thesis/Research/live/spyPanda/live555.cpp:81:
undefined reference to `Groupsock::multicastSendOnly()'
/home/alex/Documents/Thesis/Research/live/spyPanda/live555.cpp:82:
undefined reference to `Groupsock::Groupsock(UsageEnvironment&, in_addr
const&, Port, unsigned char)'
/home/alex/Documents/Thesis/Research/live/spyPanda/live555.cpp:83:
undefined reference to `Groupsock::multicastSendOnly()'
/home/alex/Documents/Thesis/Research/live/spyPanda/live555.cpp:86:
undefined reference to `OutPacketBuffer::maxSize'
/home/alex/Documents/Thesis/Research/live/spyPanda/live555.cpp:87:
undefined reference to `H264VideoRTPSink::createNew(UsageEnvironment&,
Groupsock*, unsigned char)'
/home/alex/Documents/Thesis/Research/live/spyPanda/live555.cpp:98:
undefined reference to `RTCPInstance::createNew(UsageEnvironment&,
Groupsock*, unsigned int, unsigned char const*, RTPSink*, RTPSource
const*, unsigned int)'
/home/alex/Documents/Thesis/Research/live/spyPanda/live555.cpp:101:
undefined reference to `Port::Port(unsigned short)'
/home/alex/Documents/Thesis/Research/live/spyPanda/live555.cpp:101:
undefined reference to `RTSPServer::createNew(UsageEnvironment&, Port,
UserAuthenticationDatabase*, unsigned int)'
/home/alex/Documents/Thesis/Research/live/spyPanda/live555.cpp:109:
undefined reference to `ServerMediaSession::createNew(UsageEnvironment&,
char const*, char const*, char const*, unsigned int, char const*)'
/home/alex/Documents/Thesis/Research/live/spyPanda/live555.cpp:110:
undefined reference to
`PassiveServerMediaSubsession::createNew(RTPSink&, RTCPInstance*)'
/home/alex/Documents/Thesis/Research/live/spyPanda/live555.cpp:110:
undefined reference to
`ServerMediaSession::addSubsession(ServerMediaSubsession*)'
/home/alex/Documents/Thesis/Research/live/spyPanda/live555.cpp:111:
undefined reference to
`RTSPServer::addServerMediaSession(ServerMediaSession*)'
/home/alex/Documents/Thesis/Research/live/spyPanda/live555.cpp:113:
undefined reference to `RTSPServer::rtspURL(ServerMediaSession const*,
int) const'
/home/alex/Documents/Thesis/Research/live/spyPanda/live555.cpp:82:
undefined reference to `Groupsock::~Groupsock()'
/home/alex/Documents/Thesis/Research/live/spyPanda/live555.cpp:80:
undefined reference to `Groupsock::~Groupsock()'
/home/alex/Documents/Thesis/Research/live/spyPanda/live555.cpp:82:
undefined reference to `Groupsock::~Groupsock()'
/home/alex/Documents/Thesis/Research/live/spyPanda/live555.cpp:80:
undefined reference to `Groupsock::~Groupsock()'
live555.o: In function `__static_initialization_and_destruction_0':
/home/alex/Documents/Thesis/Research/live/spyPanda/../BasicUsageEnvironment/include/DelayQueue.hh:114: undefined reference to `DELAY_SECOND'
/home/alex/Documents/Thesis/Research/live/spyPanda/../BasicUsageEnvironment/include/DelayQueue.hh:114: undefined reference to `operator*(short, DelayInterval const&)'
/home/alex/Documents/Thesis/Research/live/spyPanda/../BasicUsageEnvironment/include/DelayQueue.hh:115: undefined reference to `operator*(short, DelayInterval const&)'
/home/alex/Documents/Thesis/Research/live/spyPanda/../BasicUsageEnvironment/include/DelayQueue.hh:116: undefined reference to `operator*(short, DelayInterval const&)'
live555.o: In function `play()':
/home/alex/Documents/Thesis/Research/live/spyPanda/live555.cpp:60:
undefined reference to `MediaSink::startPlaying(MediaSource&, void
(*)(void*), void*)'
x264EncoderSource.o: In function `~x264EncoderSource':
/home/alex/Documents/Thesis/Research/live/spyPanda/x264EncoderSource.cpp:49: undefined reference to `FramedSource::~FramedSource()'
x264EncoderSource.o: In function `x264EncoderSource':
/home/alex/Documents/Thesis/Research/live/spyPanda/x264EncoderSource.cpp:40: undefined reference to `FramedSource::FramedSource(UsageEnvironment&)'
/home/alex/Documents/Thesis/Research/live/spyPanda/x264EncoderSource.cpp:45: undefined reference to `x264EncoderSource::errorHandler(void*)'
/home/alex/Documents/Thesis/Research/live/spyPanda/x264EncoderSource.cpp:40: undefined reference to `FramedSource::~FramedSource()'
x264EncoderSource.o: In function `x264EncoderSource::doGetNextFrame()':
/home/alex/Documents/Thesis/Research/live/spyPanda/x264EncoderSource.cpp:54: undefined reference to `FramedSource::handleClosure(void*)'
x264EncoderSource.o: In function `~x264EncoderSource':
/home/alex/Documents/Thesis/Research/live/spyPanda/x264EncoderSource.cpp:49: undefined reference to `FramedSource::~FramedSource()'
x264EncoderSource.o: In function `x264EncoderSource::deliverFrame()':
/home/alex/Documents/Thesis/Research/live/spyPanda/x264EncoderSource.cpp:85: undefined reference to `FramedSource::afterGetting(FramedSource*)'
x264EncoderSource.o:(.rodata._ZTV17x264EncoderSource[vtable for
x264EncoderSource]+0x10): undefined reference to
`MediaSource::isSource() const'
x264EncoderSource.o:(.rodata._ZTV17x264EncoderSource[vtable for
x264EncoderSource]+0x18): undefined reference to `Medium::isSink()
const'
x264EncoderSource.o:(.rodata._ZTV17x264EncoderSource[vtable for
x264EncoderSource]+0x20): undefined reference to
`Medium::isRTCPInstance() const'
x264EncoderSource.o:(.rodata._ZTV17x264EncoderSource[vtable for
x264EncoderSource]+0x28): undefined reference to `Medium::isRTSPClient()
const'
x264EncoderSource.o:(.rodata._ZTV17x264EncoderSource[vtable for
x264EncoderSource]+0x30): undefined reference to `Medium::isRTSPServer()
const'
x264EncoderSource.o:(.rodata._ZTV17x264EncoderSource[vtable for
x264EncoderSource]+0x38): undefined reference to
`Medium::isMediaSession() const'
x264EncoderSource.o:(.rodata._ZTV17x264EncoderSource[vtable for
x264EncoderSource]+0x40): undefined reference to
`Medium::isServerMediaSession() const'
x264EncoderSource.o:(.rodata._ZTV17x264EncoderSource[vtable for
x264EncoderSource]+0x48): undefined reference to
`Medium::isDarwinInjector() const'
x264EncoderSource.o:(.rodata._ZTV17x264EncoderSource[vtable for
x264EncoderSource]+0x60): undefined reference to
`MediaSource::getAttributes() const'
x264EncoderSource.o:(.rodata._ZTV17x264EncoderSource[vtable for
x264EncoderSource]+0x68): undefined reference to
`MediaSource::MIMEtype() const'
x264EncoderSource.o:(.rodata._ZTV17x264EncoderSource[vtable for
x264EncoderSource]+0x70): undefined reference to
`FramedSource::isFramedSource() const'
x264EncoderSource.o:(.rodata._ZTV17x264EncoderSource[vtable for
x264EncoderSource]+0x78): undefined reference to
`MediaSource::isRTPSource() const'
x264EncoderSource.o:(.rodata._ZTV17x264EncoderSource[vtable for
x264EncoderSource]+0x80): undefined reference to
`MediaSource::isMPEG1or2VideoStreamFramer() const'
x264EncoderSource.o:(.rodata._ZTV17x264EncoderSource[vtable for
x264EncoderSource]+0x88): undefined reference to
`MediaSource::isMPEG4VideoStreamFramer() const'
x264EncoderSource.o:(.rodata._ZTV17x264EncoderSource[vtable for
x264EncoderSource]+0x90): undefined reference to
`MediaSource::isH264VideoStreamFramer() const'
x264EncoderSource.o:(.rodata._ZTV17x264EncoderSource[vtable for
x264EncoderSource]+0x98): undefined reference to
`MediaSource::isDVVideoStreamFramer() const'
x264EncoderSource.o:(.rodata._ZTV17x264EncoderSource[vtable for
x264EncoderSource]+0xa0): undefined reference to
`MediaSource::isJPEGVideoSource() const'
x264EncoderSource.o:(.rodata._ZTV17x264EncoderSource[vtable for
x264EncoderSource]+0xa8): undefined reference to
`MediaSource::isAMRAudioSource() const'
x264EncoderSource.o:(.rodata._ZTV17x264EncoderSource[vtable for
x264EncoderSource]+0xb0): undefined reference to
`FramedSource::maxFrameSize() const'
x264EncoderSource.o:(.rodata._ZTV17x264EncoderSource[vtable for
x264EncoderSource]+0xc0): undefined reference to
`FramedSource::doStopGettingFrames()'
x264EncoderSource.o:(.rodata._ZTI17x264EncoderSource[typeinfo for
x264EncoderSource]+0x10): undefined reference to `typeinfo for
FramedSource'
collect2: ld returned 1 exit status
make: *** [all] Error 1

On Sat, 2011-08-27 at 17:28 -0700, Ross Finlayson wrote:
> The problem is your "afterPlaying()" function (in "live555.cpp").  You
> defined it as
> void afterPlaying(void);
> It should be
> void afterPlaying(void*);
> 
> 
> Ross Finlayson
> Live Networks, Inc.
> http://www.live555.com/
> 
> _______________________________________________
> live-devel mailing list
> live-devel at lists.live555.com
> http://lists.live555.com/mailman/listinfo/live-devel





More information about the live-devel mailing list