Podrška #24596
Zatvorenqt plugin sistem
90%
Izmjenjeno od Ernad Husremović prije više od 14 godina
build xtuple-a traje i traje ...
qt ima plugin system. on omogućava da se aplikacija dinamički dograđuje sistemom plugin-ova.
taj sistem se može iskoristiti za razbijanje xtuple monolitnog exe-a na komponente.
Izmjenjeno od Ernad Husremović prije više od 14 godina
Izmjenjeno od Ernad Husremović prije više od 14 godina
Izmjenjeno od Ernad Husremović prije više od 14 godina
Izmjenjeno od Ernad Husremović prije više od 14 godina
Izmjenjeno od Ernad Husremović prije više od 14 godina
Izmjenjeno od Ernad Husremović prije više od 14 godina
Izmjenjeno od Ernad Husremović prije više od 14 godina
hernad@macan:~/github/qt_playground/plugin_hello$ make
/usr/local/Trolltech/Qt-4.7.4/bin/moc -DQT_NO_DEBUG -DQT_PLUGIN -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Trolltech/Qt-4.7.4/mkspecs/macx-g++ -I. -I/usr/local/Trolltech/Qt-4.7.4/lib/QtCore.framework/Versions/4/Headers -I/usr/local/Trolltech/Qt-4.7.4/include/QtCore -I/usr/local/Trolltech/Qt-4.7.4/lib/QtGui.framework/Versions/4/Headers -I/usr/local/Trolltech/Qt-4.7.4/include/QtGui -I/usr/local/Trolltech/Qt-4.7.4/include -I. -F/usr/local/Trolltech/Qt-4.7.4/lib -D__APPLE__ -D__GNUC__ plugin_1.h -o moc_plugin_1.cpp
g++ -c -pipe -O2 -arch x86_64 -Xarch_x86_64 -mmacosx-version-min=10.5 -Wall -W -DQT_NO_DEBUG -DQT_PLUGIN -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Trolltech/Qt-4.7.4/mkspecs/macx-g++ -I. -I/usr/local/Trolltech/Qt-4.7.4/lib/QtCore.framework/Versions/4/Headers -I/usr/local/Trolltech/Qt-4.7.4/include/QtCore -I/usr/local/Trolltech/Qt-4.7.4/lib/QtGui.framework/Versions/4/Headers -I/usr/local/Trolltech/Qt-4.7.4/include/QtGui -I/usr/local/Trolltech/Qt-4.7.4/include -I. -F/usr/local/Trolltech/Qt-4.7.4/lib -o moc_plugin_1.o moc_plugin_1.cpp
g++ -headerpad_max_install_names -arch x86_64 -Xarch_x86_64 -mmacosx-version-min=10.5 -o plugin_1.app/Contents/MacOS/plugin_1 plugin_1.o moc_plugin_1.o -F/usr/local/Trolltech/Qt-4.7.4/lib -L/usr/local/Trolltech/Qt-4.7.4/lib -framework QtGui -L/usr/local/Trolltech/Qt-4.7.4/lib -F/usr/local/Trolltech/Qt-4.7.4/lib -framework QtCore
Undefined symbols:
"_main", referenced from:
start in crt1.10.5.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [plugin_1.app/Contents/MacOS/plugin_1] Error 1
Izmjenjeno od Ernad Husremović prije više od 14 godina
Izmjenjeno od Ernad Husremović prije više od 14 godina
Izmjenjeno od Ernad Husremović prije više od 14 godina
i nakon puno fula, bezveznih kako to meni priliči ... moj prvi plugin radi
plug_app - aplikacija koja poziva libplugin_1.dylib commit
hernad@macan:~/github/qt_playground/plugin_hello$ ls -l libplugin_1.dylib
-rwxr-xr-x 1 hernad staff 35152 Sep 28 18:02 libplugin_1.dylib
hernad@macan:~/github/qt_playground/plugin_hello$ ./plug_app
"/Users/hernad/github/qt_playground/plugin_hello" Looking for plugins at path: "/usr/local/Trolltech/Qt-4.7.4/plugins" Looking for plugins at path: "/Users/hernad/github/qt_playground/plugin_hello" hello
Izmjenjeno od Ernad Husremović prije više od 14 godina
rezime¶
interface.h
sadrži ono što plugin i plug_app dijele.
sve ostalo je potpuno autonomno.
interface.h može da sadrži više klasa koje main app i plugin dijele.
Naravno main app može podržati više plugin-ova.
plugin nije ništa drugo do shared library sa dodatnim stvarkama na qt način. isto kao što je QString qt dotjerani string objekat.
Izmjenjeno od Ernad Husremović prije više od 14 godina
naravno ovo što sam ja napisao se ne piše - hardkodirao sam dynlib.
Treba sada ovaj kod dotjerati tako ga da se u plugin/ poddirektoriju učitavaju pluginovi.
Izmjenjeno od Ernad Husremović prije više od 14 godina
- % završeno promijenjeno iz 0 u 90
Izmjenjeno od Ernad Husremović prije oko 12 godina
- Status promijenjeno iz Dodijeljeno u Zatvoreno