[Qt] Undefined Reference error bij gebruik QtSerialPort

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Opifex
  • Registratie: September 2013
  • Laatst online: 16-09 21:29
Dag allen,

Ik ben al een tijdje bezig aan een aantal elektronica projectjes, waarvoor ik een USB interface naar een µC (in dit geval voorlopig een arduino) nodig heb. In het verleden is me dit altijd goed gelukt, zowel met Java als met C++ in Visual Studio.
Maar om Qt een beetje op te frissen (maandag begint een nieuw academiejaar, en dan is zo'n opfrisbeurt natuurlijk altijd welkom :) ) heb ik deze keer de interface in Qt proberen te maken.

Alleen ging dat minder vlot dan verwacht...

Ik krijg een hele hoop gelijkaardige errors:
code:
1
2
3
C:\Users\Azzi\OneDrive\Documenten\Software3\QTProjects\ArduinoCom\serialcom.cpp:3: error: undefined reference to `_imp___ZN11QSerialPortC1EP7QObject'
C:\Users\Azzi\OneDrive\Documenten\Software3\QTProjects\ArduinoCom\serialcom.cpp:5: error: undefined reference to `_imp___ZN11QSerialPort11setPortNameERK7QString'
...


Ik verwacht dat dit zou liggen aan een library die niet is geïnclude, maar de libraries zijn wel degelijk geïnclude:

code:
1
2
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>


Van wat ik uit google kan opmaken, is dat de linker op zoek gaat naar een reference die niet bestaat, of een reference die alleen gedeclareerd is (en niet gedefinieerd). Maar dat lijkt me in dit geval zo onwaarschijnlijk, aangezien het gewoon uit de Qt library komt?

Iemand die me in de juiste richting kan sturen?

Alvast bedankt!


edit: de code:
http://pastebin.com/XtTLMNqz

EDIT2: Ok, aan de hand van een youtube filmpje waarin iemand iets gelijkaardig probeert gedaan te krijgen heb ik het al gevonden. Ik had op voorhand al een vermoeden dat het iets in die aard ging zijn, omdat ik in het verleden al vaker dit nodig heb gehad:
In Qt moet je voor sommige libraries te gebruiken, ondanks dat je ze gewoon kan includen zonder dat de IDE een fout geeft, ook een vermelding maken in je project-file. Anders vindt de linker die library niet...

Opgelost dus! Sorry voor deze nutteloze thread :X

[ Voor 16% gewijzigd door Opifex op 18-09-2015 21:51 ]


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 16-09 22:43
Je haalt source files en libraries door elkaar : de header file had je geinclude (goed) maar de (al gecompileerde) library die er bij hoort werd niet meegelinked.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • Opifex
  • Registratie: September 2013
  • Laatst online: 16-09 21:29
farlane schreef op vrijdag 18 september 2015 @ 22:10:
Je haalt source files en libraries door elkaar : de header file had je geinclude (goed) maar de (al gecompileerde) library die er bij hoort werd niet meegelinked.
Mhmmmm, dus in de header files die ik include staat niet alle benodigde info?
Ik dacht altijd dat als ik de header file zou includen, dat hij dan de bijhorende source file er ook zou bijvoegen?

Acties:
  • +1 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 16-09 22:43
Kort door de bocht : een library is een gecompileerde versie van een source file, een header file beschijft wat er in de source file ( en dus library ) staat en hoe die gebruikt moet worden.
Om een "library" te kunnen gebruiken moet je dus een header file hebben en de source file *of* de reeds gecompileerde versie daarvan, de library.

De scheiding is in de praktijk niet zo strikt, maar het is wel de essentie. Dit hoort trouwens wel bij de basics.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • Opifex
  • Registratie: September 2013
  • Laatst online: 16-09 21:29
Ik heb inderdaad de indruk dat ik veel van de basics mis, ondanks dat ik nu aan mijn laatste jaar begin =/

Ik begin het plaatje te zien. Alleen vreemd dat ik nog niet eerder tegen dit probleem ben gelopen dan...

Super bedankt voor de toelichting! Want dit zijn inderdaad wel dingen die je wil weten als programmeur :)

Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 10:56
Dat is eigenlijk een beetje het jammere aan Qt. Het abstraheert veel van het onderliggende proces, maar op sommige punten loop je er gewoon weer tegenaan. Misschien dat het handig is als je eens een klein projectje in 'gewoon' c++ schrijft. Dan wordt veel duidelijk en kan je alles in Qt ook beter plaatsen.

  • Opifex
  • Registratie: September 2013
  • Laatst online: 16-09 21:29
Ik heb vorig jaar al vrij veel in gewone C(++) geschreven, dus dat is niet het probleem denk ik =/

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 10:56
Vreemd dat je dit dan nog niet mee had gekregen :)

  • Opifex
  • Registratie: September 2013
  • Laatst online: 16-09 21:29
Inderdaad vreemd dat ik dit nog niet heb meegekregen, zeker omdat de lessen vorig jaar (Qt in het 2de semester, gewone C++ in het eerste semester) al vrij diepgaand was...

Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 16-09 22:43
Mijn ervaring is dat er wel de syntax en mogelijkheden van de taal wordt uitgelegd, maar niet het build proces : preprocessor, compiler en linker. Als daar wat meer detailkennis van zou zijn zouden veel dingen duidelijker worden.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.

Pagina: 1