Bonsoir à tous,
Je parviens à compiler QxOrm et les classes générées par QxEE, j'ai bien les librairies, elles dépendent bien de Qt5 (check avec ldd). Je précise parce que j'ai aussi Qt4 dans mon environnement.
Je souhaite tester tout ça dans un programme existant. J'ai modifié mon makefile, avec (entre autres) les liens vers -lQxOrm -lMaLibCompileeViaLesSourcesGenereesParQxEE -lQt5Core -lQt5Sql nécessaires à la compilation.
Voici les erreurs que j'obtiens à la compilation :
Ma classe test étant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 test.o: Dans la fonction QString::QString(): test.cpp:(.text._ZN7QStringC2Ev[_ZN7QStringC5Ev]+0x13): reference indefinie vers QString::shared_null test.o: Dans la fonction QString::~QString(): test.cpp:(.text._ZN7QStringD2Ev[_ZN7QStringD5Ev]+0x2d): reference indefinie vers QString::free(QString::Data*) test.o: Dans la fonction operator+(QString const&, char const*): test.cpp:(.text._ZplRK7QStringPKc[_ZplRK7QStringPKc]+0x3c): reference indefinie vers QString::fromAscii(char const*, int) test.o: Dans la fonction operator+(char const*, QString const&): test.cpp:(.text._ZplPKcRK7QString[_ZplPKcRK7QString]+0x29): reference indefinie vers QString::fromAscii(char const*, int) test.o: Dans la fonction QHash<QString, QString>::findNode(QString const&, unsigned int*) const: test.cpp:(.text._ZNK5QHashI7QStringS0_E8findNodeERKS0_Pj[_ZNK5QHashI7QStringS0_E8findNodeERKS0_Pj]+0x1c): reference indefinie vers qHash(QString const&) test.o: Dans la fonction QHashNode<QString, QString>::same_key(unsigned int, QString const&): test.cpp:(.text._ZN9QHashNodeI7QStringS0_E8same_keyEjRKS0_[_ZN9QHashNodeI7QStringS0_E8same_keyEjRKS0_]+0x32): reference indefinie vers QString::operator==(QString const&) const collect2: error: ld returned 1 exit status
Ce qui m'étonne c'est que ça compile très bien avec les librairies de Qt4 (-lQtCore -lQtSql dans mon cas). Par contre plantage à l'exécution évidemment puisque QxOrm et MaLibCompileeViaLesSourcesGenereesParQxEE.so sont compilés avec Qt5.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 #include "test.hh" #include "../cpp-wrapper.h" #include "../../Qx/orm_src/include/xxx_precompiled_header.gen.h" #include "../../Qx/orm_src/include/xxx_TEST1.gen.h" #include <QxOrm_Impl.h> /** * * Wrapper C * */ void Test_test() { xxx::Test::test(); } using namespace yyy; namespace xxx { void Test::test() { typedef shared_ptr<TEST1> Test1_ptr; Test1_ptr t1; t1.reset(new TEST1()); t1->setCHAMP_1_STR("orm1"); t1->setCHAMP_2_INT(11); Test1_ptr t2; t2.reset(new TEST1()); t2->setCHAMP_1_STR("orm2"); t2->setCHAMP_2_INT(12); Test1_ptr t3; t3.reset(new TEST1()); t3->setCHAMP_1_STR("orm3"); t3->setCHAMP_2_INT(13); typedef vector<Test1_ptr> type_lst_test1; type_lst_test1 lst_test1; lst_test1.push_back(t1); lst_test1.push_back(t2); lst_test1.push_back(t3); qx::QxSqlDatabase::getSingleton()->setDriverName("QODBC"); qx::QxSqlDatabase::getSingleton()->setDatabaseName("xxx"); qx::QxSqlDatabase::getSingleton()->setHostName("xxx"); qx::QxSqlDatabase::getSingleton()->setUserName("xxx"); qx::QxSqlDatabase::getSingleton()->setPassword("xxx"); QSqlError daoError = qx::dao::insert(lst_test1); } }
Avez-vous une idée ?
Merci d'avance !
Partager