undefined
16-10-2004, 15:42
Ich habe etwas Verständnisprobleme beim ansprechen von der Klasse Arts::VideoPlayObject
Ich bekomme ständig Linker Fehler sehe jedoch nicht wo mein Problem liegt.
/bin/sh ../libtool --silent --mode=link --tag=CXX g++ -Wnon-virtual-dtor -Wno-long-long -Wundef -Wall -W -Wpointer-arith -Wwrite-strings -g3 -fno-inline -O0 -g3 -fno-exceptions -fno-check-new -fno-common -o kdvfirewire -R /opt/kde3/lib -R /usr/lib/qt3/lib -R /usr/X11R6/lib -L/usr/X11R6/lib -L/usr/lib/qt3/lib -L/opt/kde3/lib main.o kdvfirewire.o kdvfirewireview.o pref.o prefaudiooptions.o prefvideooptions.o prefprojectoptions.o kdvpanel.o kdvvideo.o kdvfirewireiface_skel.o prefaudiooptions.moc.o prefprojectoptions.moc.o prefvideooptions.moc.o -lkio -lkdeprint -lavc1394 -lrom1394 -ldv
kdvvideo.o(.gnu.linkonce.t._ZN4Arts15VideoPlayObje ctC1Ev+0xa): In function `Arts::VideoPlayObject::VideoPlayObject[in-charge]()':
/opt/kde3/include/arts/kmedia2.h:993: undefined reference to `Arts::VideoPlayObject::_Creator()'
collect2: ld returned 1 exit status
Ich habe schon ein Macro geschrieben was auch wunderbar funktioniert.
//MACRO
AC_DEFUN([KDVF_USED_ARTS],
[
KDE_SUBST_PROGRAMS(arts)
if test "$ARTSCCONFIG" != "no"; then
ARTS_CFLAGS=`$ARTSCCONFIG --cflags`
ARTS_LIBS=`$ARTSCCONFIG --libs`
ARTS=`$ARTSCCONFIG --arts-prefix`
AC_SUBST(ARTS_CFLAGS)
AC_SUBST(ARTS_LIBS)
AC_CHECK_HEADER($ARTS/include/artsc/artsc.h,
[ AC_DEFINE(HAVE_ARTS_VIDEO, 1,
[Define if you have the ARTS_VIDEO API])
])
KDE_CHECK_LIB([artsc], [main], [have_libartc=yes], [have_libartc=no])
if test "$have_libartc" != "no"; then
LIB_ARTS="-lartsc"
AC_SUBST(LIB_ARTS)
else
AC_MSG_ERROR([Could not find libartsc anywhere!])
fi
fi
])
KDVF_USED_ARTS
Jedoch brachte dies keine Änderung, habe ich eventuell ein ganz falschen Aufbau meiner Klassenstruktur?
//H
#ifndef KDVVIDEO_H
#define KDVVIDEO_H
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <klocale.h>
#include <qwidget.h>
#include <arts/artskde.h>
#include <arts/debug.h>
//#include <libdv/dv.h>
namespace Arts
{
class KDVVideo : public QWidget
{
Q_OBJECT
public:
KDVVideo( QWidget *parent = 0, const char *name = 0, WFlags f = 0 );
int videoBreit;
int videoHoch;
virtual ~KDVVideo();
private:
void init(void);
Arts::VideoPlayObject KDVXWidget;
};
};
#endif
//CPP
#include "kdvvideo.h"
#ifdef HAVE_X11_XLIB_H
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#endif
#include <kdebug.h>
namespace Arts
{
KDVVideo::KDVVideo(QWidget *parent, const char *name, WFlags f ) : QWidget( parent, name, f )
{
init();
}
void KDVVideo::init(void)
{
setMinimumSize( 0, 0 ); //QSize( 450, 350 )
setPaletteBackgroundColor( QColor( 35, 90, 35 ) );
setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) );
setFocusPolicy( ClickFocus );
Arts::Debug();
KDVXWidget = Arts::VideoPlayObject::null();
videoBreit = 0;
videoHoch = 0;
}
KDVVideo::~KDVVideo()
{}
}
;
#include "kdvvideo.moc"
danke für Tips und Anregungen
mfg undefined
Ich bekomme ständig Linker Fehler sehe jedoch nicht wo mein Problem liegt.
/bin/sh ../libtool --silent --mode=link --tag=CXX g++ -Wnon-virtual-dtor -Wno-long-long -Wundef -Wall -W -Wpointer-arith -Wwrite-strings -g3 -fno-inline -O0 -g3 -fno-exceptions -fno-check-new -fno-common -o kdvfirewire -R /opt/kde3/lib -R /usr/lib/qt3/lib -R /usr/X11R6/lib -L/usr/X11R6/lib -L/usr/lib/qt3/lib -L/opt/kde3/lib main.o kdvfirewire.o kdvfirewireview.o pref.o prefaudiooptions.o prefvideooptions.o prefprojectoptions.o kdvpanel.o kdvvideo.o kdvfirewireiface_skel.o prefaudiooptions.moc.o prefprojectoptions.moc.o prefvideooptions.moc.o -lkio -lkdeprint -lavc1394 -lrom1394 -ldv
kdvvideo.o(.gnu.linkonce.t._ZN4Arts15VideoPlayObje ctC1Ev+0xa): In function `Arts::VideoPlayObject::VideoPlayObject[in-charge]()':
/opt/kde3/include/arts/kmedia2.h:993: undefined reference to `Arts::VideoPlayObject::_Creator()'
collect2: ld returned 1 exit status
Ich habe schon ein Macro geschrieben was auch wunderbar funktioniert.
//MACRO
AC_DEFUN([KDVF_USED_ARTS],
[
KDE_SUBST_PROGRAMS(arts)
if test "$ARTSCCONFIG" != "no"; then
ARTS_CFLAGS=`$ARTSCCONFIG --cflags`
ARTS_LIBS=`$ARTSCCONFIG --libs`
ARTS=`$ARTSCCONFIG --arts-prefix`
AC_SUBST(ARTS_CFLAGS)
AC_SUBST(ARTS_LIBS)
AC_CHECK_HEADER($ARTS/include/artsc/artsc.h,
[ AC_DEFINE(HAVE_ARTS_VIDEO, 1,
[Define if you have the ARTS_VIDEO API])
])
KDE_CHECK_LIB([artsc], [main], [have_libartc=yes], [have_libartc=no])
if test "$have_libartc" != "no"; then
LIB_ARTS="-lartsc"
AC_SUBST(LIB_ARTS)
else
AC_MSG_ERROR([Could not find libartsc anywhere!])
fi
fi
])
KDVF_USED_ARTS
Jedoch brachte dies keine Änderung, habe ich eventuell ein ganz falschen Aufbau meiner Klassenstruktur?
//H
#ifndef KDVVIDEO_H
#define KDVVIDEO_H
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <klocale.h>
#include <qwidget.h>
#include <arts/artskde.h>
#include <arts/debug.h>
//#include <libdv/dv.h>
namespace Arts
{
class KDVVideo : public QWidget
{
Q_OBJECT
public:
KDVVideo( QWidget *parent = 0, const char *name = 0, WFlags f = 0 );
int videoBreit;
int videoHoch;
virtual ~KDVVideo();
private:
void init(void);
Arts::VideoPlayObject KDVXWidget;
};
};
#endif
//CPP
#include "kdvvideo.h"
#ifdef HAVE_X11_XLIB_H
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#endif
#include <kdebug.h>
namespace Arts
{
KDVVideo::KDVVideo(QWidget *parent, const char *name, WFlags f ) : QWidget( parent, name, f )
{
init();
}
void KDVVideo::init(void)
{
setMinimumSize( 0, 0 ); //QSize( 450, 350 )
setPaletteBackgroundColor( QColor( 35, 90, 35 ) );
setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) );
setFocusPolicy( ClickFocus );
Arts::Debug();
KDVXWidget = Arts::VideoPlayObject::null();
videoBreit = 0;
videoHoch = 0;
}
KDVVideo::~KDVVideo()
{}
}
;
#include "kdvvideo.moc"
danke für Tips und Anregungen
mfg undefined