C meghatározatlan hivatkozás
Ha egy olyan programot futtat egy root =) ad vissza egy listát a monitorok, hogy lehet ellenőrizni. Itt van a következtetést.
file: dev: / dev / i2c-4 (Ismeretlen monitor (VSC3A2C))
Ha jól értem a fordítási folyamatot. A C ++ fordító képes volt tökéletesen létre az objektumot fájlokat. De problémák merülnek fel a következő lépésben. A linker nem találja ddcci_probe function ()
ls * .o
main.o monitorlist.o
nm -D /usr/lib/x86_64-linux-gnu/libddccontrol.so.0 | grep ddcci_probe
0000000000004680 T ddcci_probe
00000000000044e0 T ddcci_probe_device
g ++ -o MyProgram main.o monitorlist.o -lddccontrol
monitorlist.o: A funkció `MonitorList :: MonitorList () #„:
monitorlist.cpp: 4: nem definiált hivatkozás `ddcci_probe () #"
collect2: error: ld iránt 1 exit status
Nos, ítélve a logika, akkor helyesen
sudo g ++ -o MyProgram main.o monitorlist.o -lddccontrol
A linker teljes hozzáférést kell biztosítani a fájlokat (nem értettem, hogy mit.)
de talán meg kell.
Emlékeztem C ++ van egy funkció, külső funkciók
pListMonitor = ddcci_probe ();
át kell tenni a bejelentés osztály (file monitorlist.h)
#ifndef MONITORLIST_H
#define MONITORLIST_H
extern "C"
#include
>
osztály MonitorList
nyilvános:
struct monitorlist * pListMonitor;
MonitorList () pListMonitor = ddcci_probe ();>
>;
#endif // MONITORLIST_H
fájlt (main.cpp)
#include "monitorlist.h"
int main (int argc, char * argv [])
MonitorList List ();
vissza 0;
>
végrehajtás fájlt (monitorlist.cpp)
Van egy üres.
Minden szépen össze.