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.

Kapcsolódó cikkek