Ik werkt op ene linux bak met qt, met qt heb ik een projectje gemaakt die enkele externe classes moet includen (sbigimg & sbigcam) deze hebben beide een header + implementatie.
Compilen gaat prima, maar als ik alles wil linken krijg ik een error.
Make gemaakt met qmake, de error:
Nu heb ik een vermoeden dat het door de :: komt. Wat doen deze is dit als een this-pointer?
Het vreemde is dat een bestaand QT project die dezelfde code meelinkt + gebruikt dit niet heeft.
Hierom vermoed ik dat de code wel correct is, maar er wat anders aan de hand is.
Wie kan me hierbij helpen? verder gebruik ik Qt en Linux maar ik dacht dat hij in deze catergorie beter af was.
Edit: ik heb een idee.
Het vb programm moet de volgende regel ' gedraaid' hebben: export LD_LIBRARY_PATH=/usr/local/lib
hierin staan wat libs mbt de driver. Waarschijnlijk worden deze ook gebruikt. De vraag is nu dan. Wat mis ik waardoor het vb wel compiled en linkt en mijne niet?
Compilen gaat prima, maar als ik alles wil linken krijg ik een error.
Make gemaakt met qmake, de error:
de functie SBIGUnivDrvCommand staat alsvolgt geinplementeerd:g++ -o cam .obj/main.o .obj/csbigcam.o .obj/csbigimg.o .obj/mainform.o .obj/qmake_image_collection.o .obj/moc_mainform.o -L/usr/share/qt3/lib -L/usr/X11R6/lib -lqt-mt -lXext -lX11 -lm
.obj/csbigcam.o(.text+0x5f9): In function `CSBIGCam::SBIGUnivDrvCommand(short, void*, void*)':
: undefined reference to `SBIGUnivDrvCommand'
.obj/csbigcam.o(.text+0x622): In function `CSBIGCam::SBIGUnivDrvCommand(short, void*, void*)':
: undefined reference to `SBIGUnivDrvCommand'
.obj/csbigcam.o(.text+0x667): In function `CSBIGCam::OpenDriver()':
: undefined reference to `SBIGUnivDrvCommand'
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| PAR_ERROR CSBIGCam::SBIGUnivDrvCommand(short command, void *Params, void *Results) { SetDriverHandleParams sdhp; // make sure we have a valid handle to the driver m_eLastCommand = (PAR_COMMAND)command; if ( m_nDrvHandle == INVALID_HANDLE_VALUE ) m_eLastError = CE_DRIVER_NOT_OPEN; else { // handle is valid so install it in the driver sdhp.handle = m_nDrvHandle; if ( (m_eLastError = (PAR_ERROR)::SBIGUnivDrvCommand(CC_SET_DRIVER_HANDLE, &sdhp, NULL)) == CE_NO_ERROR ) // call the desired command m_eLastError = (PAR_ERROR)::SBIGUnivDrvCommand(command, Params, Results); } return m_eLastError; } |
Nu heb ik een vermoeden dat het door de :: komt. Wat doen deze is dit als een this-pointer?
Het vreemde is dat een bestaand QT project die dezelfde code meelinkt + gebruikt dit niet heeft.
Hierom vermoed ik dat de code wel correct is, maar er wat anders aan de hand is.
Wie kan me hierbij helpen? verder gebruik ik Qt en Linux maar ik dacht dat hij in deze catergorie beter af was.
Edit: ik heb een idee.
Het vb programm moet de volgende regel ' gedraaid' hebben: export LD_LIBRARY_PATH=/usr/local/lib
hierin staan wat libs mbt de driver. Waarschijnlijk worden deze ook gebruikt. De vraag is nu dan. Wat mis ik waardoor het vb wel compiled en linkt en mijne niet?
[ Voor 8% gewijzigd door elgringo op 12-12-2005 15:42 ]
if broken it is, fix it you should