PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : shared Library's und Qt-Creator



GBunge
30-10-2011, 11:00
Hallo,
mein aktuelles Betriebssystem ist Mac OS X.
Seit ein paar Tagen benutze ich Qt-Creator. Vorher habe ich es ohne viel Erfolg mit XCode versucht.

Eine dynamisch zu linkende Bibliothek habe ich damit programmiert.
Die Bibliothek und die Header-Dateien stehen unter "/usr/local/include" und "/usr/local/lib".

Nun möchte ich in einem Testprogramm Funktionen dieser Library aufrufen.
Da ich im Qt-Creator keinen Ort gefunden habe, an dem ich eine dynamisch zu linkende Bibliothek eintragen kann, habe ich das *.pro File editiert.



INCLUDEPATH += /usr/local/include
LIBS += /usr/local/lib

Das Testprogramm kompiliert kommt nun ein Fehler:


in /usr/local/lib, can't map file, errno=22*for archetecture x86_64
collect2: ld returned 1*exit status

Unter Ubuntu-Linux habe ich diese Library bereits benutzt. Dort habe ich mit Hilfe von
KDevelop programmiert.

Nun komme ich nicht weiter, weil ich nicht weiß, wie der Name der Library dem Qt-Creator oder
dem Testproramm bekannt wird.


Mit freundlichen Grüßen
GBunge

anda_skoa
30-10-2011, 11:31
LIBS += -L/usr/local/lib -lnamederlib


Ciao,
_

GBunge
31-10-2011, 10:27
Hallo anda_skoa,
danke für die schnelle Antwort. Es klappt nun auch.
Allerdings crasht das Programm, sobald ich eine Funktion aus der Bibliothek aufrufe.
MfG

undefined
31-10-2011, 10:43
Zeige mal die Ausgabe von:

nm -g -D -C --defined-only /usr/local/lib/meinebib.so

GBunge
03-11-2011, 12:39
Zeige mal die Ausgabe von:

nm -g -D -C --defined-only /usr/local/lib/meinebib.so

Hallo undifined,
meine Bibliothek steht nicht in /usr/local/lib.
Ich habe sie während der Entwicklungsphase in einem Ordner in meinem Home.


erde:~ gb$ nm -g ALIBS/*.so
nm: can't open file: ALIBS/*.so (No such file or directory)

Die Bibliothek endet auf "dylib"


erde:~ gb$ nm -g ALIBS/*.*

ALIBS/libJulian.dylib:
U __Unwind_Resume
0000000000003342 T __Z7qt_noopv
U __Z9qt_assertPKcS0_i
U __ZN11QMetaObject18connectSlotsByNameEP7QObject
U __ZN11QPushButtonC1EP7QWidget
U __ZN15QAbstractButton7setTextERK7QString
0000000000002c8a T __ZN15QBasicAtomicInt5derefEv
U __ZN16QCoreApplication9translateEPKcS1_S1_NS_8Enco dingE
0000000000002cee T __ZN5QRectC1Eiiii
0000000000002cca T __ZN5QSizeC1Eii
00000000000031c0 T __ZN6Julian11qt_metacallEN11QMetaObject4CallEiPPv
00000000000032a2 T __ZN6Julian11qt_metacastEPKc
0000000000004160 S __ZN6Julian16staticMetaObjectE
00000000000028a2 T __ZN6Julian6hideMeEv
00000000000029d0 T __ZN6Julian6readMeEv
000000000000288a T __ZN6Julian6showMeEv
0000000000002b26 T __ZN6JulianC1EP7QWidget
0000000000002bd8 T __ZN6JulianC2EP7QWidget
0000000000002a02 T __ZN6JulianD0Ev
0000000000002a6a T __ZN6JulianD1Ev
0000000000002ac8 T __ZN6JulianD2Ev
0000000000002dbe T __ZN6QFlagsIN2Qt10WindowTypeEEC1EPPv
U __ZN7QDialog10closeEventEP11QCloseEvent
U __ZN7QDialog10setVisibleEb
U __ZN7QDialog11eventFilterEP7QObjectP6QEvent
U __ZN7QDialog11qt_metacallEN11QMetaObject4CallEiPPv
U __ZN7QDialog11qt_metacastEPKc
U __ZN7QDialog11resizeEventEP12QResizeEvent
U __ZN7QDialog13keyPressEventEP9QKeyEvent
U __ZN7QDialog16contextMenuEventEP17QContextMenuEven t
U __ZN7QDialog16staticMetaObjectE
U __ZN7QDialog4doneEi
U __ZN7QDialog6acceptEv
U __ZN7QDialog6rejectEv
U __ZN7QDialog9showEventEP10QShowEvent
U __ZN7QDialogC2EP7QWidget6QFlagsIN2Qt10WindowTypeEE
U __ZN7QDialogD2Ev
U __ZN7QObject10childEventEP11QChildEvent
U __ZN7QObject10timerEventEP11QTimerEvent
U __ZN7QObject11customEventEP6QEvent
U __ZN7QObject13connectNotifyEPKc
U __ZN7QObject13setObjectNameERK7QString
U __ZN7QObject16disconnectNotifyEPKc
U __ZN7QString16fromAscii_helperEPKci
U __ZN7QString4freeEPNS_4DataE
U __ZN7QString8fromUtf8EPKci
0000000000002dd6 T __ZN7QStringC1EPKc
0000000000002e30 T __ZN7QStringD1Ev
U __ZN7QStringaSERKS_
U __ZN7QWidget10enterEventEP6QEvent
U __ZN7QWidget10fontChangeERK5QFont
U __ZN7QWidget10leaveEventEP6QEvent
U __ZN7QWidget10paintEventEP11QPaintEvent
U __ZN7QWidget10wheelEventEP11QWheelEvent
U __ZN7QWidget11actionEventEP12QActionEvent
U __ZN7QWidget11changeEventEP6QEvent
U __ZN7QWidget11setGeometryERK5QRect
U __ZN7QWidget11styleChangeER6QStyle
U __ZN7QWidget11tabletEventEP12QTabletEvent
U __ZN7QWidget12focusInEventEP11QFocusEvent
U __ZN7QWidget13dragMoveEventEP14QDragMoveEvent
U __ZN7QWidget13enabledChangeEb
U __ZN7QWidget13focusOutEventEP11QFocusEvent
U __ZN7QWidget13paletteChangeERK8QPalette
U __ZN7QWidget14dragEnterEventEP15QDragEnterEvent
U __ZN7QWidget14dragLeaveEventEP15QDragLeaveEvent
U __ZN7QWidget14languageChangeEv
U __ZN7QWidget14mouseMoveEventEP11QMouseEvent
U __ZN7QWidget14setWindowTitleERK7QString
U __ZN7QWidget15keyReleaseEventEP9QKeyEvent
U __ZN7QWidget15mousePressEventEP11QMouseEvent
U __ZN7QWidget16inputMethodEventEP17QInputMethodEven t
U __ZN7QWidget17mouseReleaseEventEP11QMouseEvent
U __ZN7QWidget18focusNextPrevChildEb
U __ZN7QWidget21mouseDoubleClickEventEP11QMouseEvent
U __ZN7QWidget22windowActivationChangeEb
0000000000002d60 T __ZN7QWidget4hideEv
0000000000002d38 T __ZN7QWidget4showEv
U __ZN7QWidget5eventEP6QEvent
U __ZN7QWidget6resizeERK5QSize
0000000000002e00 T __ZN7QWidget6resizeEii
U __ZN7QWidget8macEventEP25OpaqueEventHandlerCallRef P14OpaqueEventRef
U __ZN7QWidget9dropEventEP10QDropEvent
U __ZN7QWidget9hideEventEP10QHideEvent
U __ZN7QWidget9moveEventEP10QMoveEvent
0000000000002e60 T __ZN9Ui_Julian13retranslateUiEP7QDialog
0000000000002f2e T __ZN9Ui_Julian7setupUiEP7QDialog
0000000000003348 T __ZNK14QScopedPointerI11QObjectData21QScopedPointe rDeleterIS0_EEptEv
00000000000032f8 T __ZNK6Julian10metaObjectEv
U __ZNK7QDialog15minimumSizeHintEv
U __ZNK7QDialog8sizeHintEv
U __ZNK7QObject10objectNameEv
0000000000002cae T __ZNK7QString7isEmptyEv
U __ZNK7QWidget11paintEngineEv
U __ZNK7QWidget14heightForWidthEi
U __ZNK7QWidget16inputMethodQueryEN2Qt16InputMethodQ ueryE
U __ZNK7QWidget6metricEN12QPaintDevice17PaintDeviceM etricE
U __ZNK7QWidget7devTypeEv
U __ZNKSs4sizeEv
U __ZNKSsixEm
0000000000002d87 T __ZSt3minImERKT_S2_S2_
0000000000004390 S __ZTI6Julian
U __ZTI7QDialog
00000000000036bc S __ZTS6Julian
0000000000004180 S __ZTV6Julian
U __ZTVN10__cxxabiv120__si_class_type_infoE
00000000000029f9 T __ZThn16_N6JulianD0Ev
0000000000002a60 T __ZThn16_N6JulianD1Ev
U __ZThn16_NK7QWidget11paintEngineEv
U __ZThn16_NK7QWidget6metricEN12QPaintDevice17PaintD eviceMetricE
U __ZThn16_NK7QWidget7devTypeEv
U __ZdlPv
U __Znwm
U ___gxx_personality_v0
U _strcmp
erde:~ gb$


MfG GBunge

undefined
04-11-2011, 15:42
Habe ich richtig vermutet ;)
Du verwendest einen gcc >= 4.* Compiler
Wenn du Bibliotheken schreibst mußt du dich mit Visibility auseinander setzen.
http://gcc.gnu.org/wiki/Visibility
Außerdem werden deine Pfade zu den Abhängigkeiten nicht aufgelöst.
Siehe ldd und ld
Beispiel:


~> ldd libxhtmldbg-1.0.so.0.8.13
linux-gate.so.1 => (0xffffe000)
libQtCore.so.4 => /usr/lib/libQtCore.so.4 (0xb748c000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb7472000)
libQtGui.so.4 => /usr/lib/libQtGui.so.4 (0xb6819000)
libQtXml.so.4 => /usr/lib/libQtXml.so.4 (0xb67cf000)
libQtDBus.so.4 => /usr/lib/libQtDBus.so.4 (0xb673d000)
libkdeui.so.5 => /usr/lib/libkdeui.so.5 (0xb6272000)
libqjson.so.0 => /usr/lib/libqjson.so.0 (0xb6251000)
libkdecore.so.5 => /usr/lib/libkdecore.so.5 (0xb5f2f000)
libQtSvg.so.4 => /usr/lib/libQtSvg.so.4 (0xb5ed1000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb5dce000)
libm.so.6 => /lib/libm.so.6 (0xb5da8000)
libc.so.6 => /lib/libc.so.6 (0xb5c39000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb5c19000)
libodbc.so.1 => /usr/lib/libodbc.so.1 (0xb5ba7000)
libodbcinst.so.1 => /usr/lib/libodbcinst.so.1 (0xb5b93000)
libsqlite.so.0 => /usr/lib/libsqlite.so.0 (0xb5b32000)
libsqlite3.so.0 => /usr/lib/libsqlite3.so.0 (0xb5a5a000)
libssl.so.1.0.0 => /usr/lib/libssl.so.1.0.0 (0xb59ff000)
libcrypto.so.1.0.0 => /usr/lib/libcrypto.so.1.0.0 (0xb5847000)
libdl.so.2 => /lib/libdl.so.2 (0xb5843000)
libdbus-1.so.3 => /usr/lib/libdbus-1.so.3 (0xb57f3000)
librt.so.1 => /lib/librt.so.1 (0xb57ea000)
libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0xb56b4000)
libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0xb5674000)
libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb5648000)
libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0xb55b1000)
libz.so.1 => /lib/libz.so.1 (0xb5597000)
libiconv.so.2 => /usr/lib/libiconv.so.2 (0xb54b1000)
libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0xb54aa000)
/lib/ld-linux.so.2 (0xb7863000)
libpng14.so.14 => /usr/lib/libpng14.so.14 (0xb547d000)
libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0xb5429000)
libSM.so.6 => /opt/kde3/lib/libSM.so.6 (0xb5420000)
libICE.so.6 => /usr/lib/libICE.so.6 (0xb5405000)
libXi.so.6 => /usr/lib/libXi.so.6 (0xb53f6000)
libXrender.so.1 => /usr/lib/libXrender.so.1 (0xb53eb000)
libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0xb53e2000)
libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0xb53db000)
libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0xb53d0000)
libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0xb53cb000)
libXext.so.6 => /usr/lib/libXext.so.6 (0xb53b7000)
libX11.so.6 => /usr/lib/libX11.so.6 (0xb52ae000)
libXft.so.2 => /usr/lib/libXft.so.2 (0xb5296000)
libXau.so.6 => /usr/lib/libXau.so.6 (0xb5292000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb528b000)
libXpm.so.4 => /usr/lib/libXpm.so.4 (0xb5278000)
libattica.so.0 => /usr/lib/libattica.so.0 (0xb51f1000)
libQtNetwork.so.4 => /usr/lib/libQtNetwork.so.4 (0xb508a000)
libdbusmenu-qt.so.2 => /usr/lib/libdbusmenu-qt.so.2 (0xb5051000)
libXtst.so.6 => /usr/lib/libXtst.so.6 (0xb504a000)
libbz2.so.1 => /lib/libbz2.so.1 (0xb5036000)
liblzma.so.5 => /usr/lib/liblzma.so.5 (0xb500b000)
libresolv.so.2 => /lib/libresolv.so.2 (0xb4ff4000)
libfam.so.1 => /usr/lib/libfam.so.1 (0xb4feb000)
libltdl.so.7 => /usr/lib/libltdl.so.7 (0xb4fe1000)
libgomp.so.1 => /usr/lib/libgomp.so.1 (0xb4fcf000)
libffi.so.4 => /usr/lib/libffi.so.4 (0xb4fc7000)
libuuid.so.1 => /lib/libuuid.so.1 (0xb4fc1000)
libxcb.so.1 => /usr/lib/libxcb.so.1 (0xb4fa3000)

~> ld libxhtmldbg-1.0.so.0.8.13
ld: warning: cannot find entry symbol _start; not setting start address

~> nm -g -D -C --defined-only libxhtmldbg-1.0.so.0.8.13
00004800 T xhtmldbg::PluginInfo::getVersion()
00004940 T xhtmldbg::PluginInfo::setVersion(QString const&)
00003e40 T xhtmldbg::PluginInfo::qt_metacall(QMetaObject::Cal l, int, void**)
00003da0 T xhtmldbg::PluginInfo::qt_metacast(char const*)
00004a00 T xhtmldbg::PluginInfo::dbusInterface(QDBusConnectio n const&, QObject*)
00004840 T xhtmldbg::PluginInfo::getDescription()
000047c0 T xhtmldbg::PluginInfo::getGenericName()
00004980 T xhtmldbg::PluginInfo::setDescription(QString const&)
00004900 T xhtmldbg::PluginInfo::setGenericName(QString const&)
0000adc4 D xhtmldbg::PluginInfo::staticMetaObject
00004780 T xhtmldbg::PluginInfo::getName()
000048c0 T xhtmldbg::PluginInfo::setName(QString const&)
00004880 T xhtmldbg::PluginInfo::getAuthor()
000049c0 T xhtmldbg::PluginInfo::setAuthor(QString const&)
000046e0 T xhtmldbg::PluginInfo::PluginInfo(QObject*, xhtmldbg::PluginInfo::PluginType)
00004660 T xhtmldbg::PluginInfo::PluginInfo(QObject*, xhtmldbg::PluginInfo::PluginType)
00004480 T xhtmldbg::WinInterface::qt_metacall(QMetaObject::C all, int, void**)
000043a0 T xhtmldbg::WinInterface::qt_metacast(char const*)
00006aa0 T xhtmldbg::WinInterface::errorMessage(QString const&)
00006920 T xhtmldbg::WinInterface::noticeMessage(QString const&)
0000ae78 D xhtmldbg::WinInterface::staticMetaObject
00006c20 T xhtmldbg::WinInterface::open(QUrl const&, bool)
00004420 T xhtmldbg::WinInterface::error(QString const&, QString const&)
00006da0 T xhtmldbg::WinInterface::setUrl(QUrl const&, QUrl const&)
00006860 T xhtmldbg::WinInterface::hasErrors()
00006f40 T xhtmldbg::WinInterface::setSource(QUrl const&, QString const&)
000074c0 T xhtmldbg::WinInterface::WinInterface(QDBusConnecti on const&, QObject*)
000074c0 T xhtmldbg::WinInterface::WinInterface(QDBusConnecti on const&, QObject*)
00007160 T xhtmldbg::WinInterface::~WinInterface()
000070c0 T xhtmldbg::WinInterface::~WinInterface()
000070c0 T xhtmldbg::WinInterface::~WinInterface()
00005c20 T xhtmldbg::Plugger::findPlugin(QString const&)
000058c0 T xhtmldbg::Plugger::findPlugins()
00004260 T xhtmldbg::Plugger::qt_metacall(QMetaObject::Call, int, void**)
000042c0 T xhtmldbg::Plugger::qt_metacast(char const*)
00005d40 T xhtmldbg::Plugger::pluginsByType(QWidget*, xhtmldbg::PluginInfo::PluginType)
0000ae18 D xhtmldbg::Plugger::staticMetaObject
00005320 T xhtmldbg::Plugger::Plugger(QObject*)
00005320 T xhtmldbg::Plugger::Plugger(QObject*)
00005780 T xhtmldbg::Plugger::~Plugger()
00005720 T xhtmldbg::Plugger::~Plugger()
00005720 T xhtmldbg::Plugger::~Plugger()
00003a60 T xhtmldbg::Interface::qt_metacall(QMetaObject::Call , int, void**)
00003b00 T xhtmldbg::Interface::qt_metacast(char const*)
0000ad00 D xhtmldbg::Interface::staticMetaObject
00004040 T xhtmldbg::PluginInfo::metaObject() const
00004600 T xhtmldbg::WinInterface::metaObject() const
00004340 T xhtmldbg::Plugger::metaObject() const
00003ba0 T xhtmldbg::Interface::metaObject() const
0000ad10 V typeinfo for xhtmldbg::PluginInfo
0000ae28 V typeinfo for xhtmldbg::WinInterface
0000add4 V typeinfo for xhtmldbg::Plugger
0000ac40 V typeinfo for xhtmldbg::Interface
00007960 V typeinfo name for xhtmldbg::PluginInfo
00007ca0 V typeinfo name for xhtmldbg::WinInterface
00007978 V typeinfo name for xhtmldbg::Plugger
000076ab V typeinfo name for xhtmldbg::Interface
0000ad28 V VTT for xhtmldbg::PluginInfo
0000ac58 V VTT for xhtmldbg::Interface
0000ad40 V vtable for xhtmldbg::PluginInfo
0000ae40 V vtable for xhtmldbg::WinInterface
0000ade0 V vtable for xhtmldbg::Plugger
0000ac60 V vtable for xhtmldbg::Interface
00004020 T virtual thunk to xhtmldbg::PluginInfo::metaObject() const
00003b80 T virtual thunk to xhtmldbg::Interface::metaObject() const
00003d80 T virtual thunk to xhtmldbg::PluginInfo::qt_metacast(char const*)
00003ae0 T virtual thunk to xhtmldbg::Interface::qt_metacast(char const*)
00003e20 T virtual thunk to xhtmldbg::PluginInfo::qt_metacall(QMetaObject::Cal l, int, void**)
00003a40 T virtual thunk to xhtmldbg::Interface::qt_metacall(QMetaObject::Call , int, void**)
0000b178 A __bss_start
0000b178 A _edata
0000b180 A _end
00007658 T _fini
000032a4 T _init