<br><br><b><i>Mircea Bardac &lt;cs@mircea.bardac.net&gt;</i></b> wrote:<blockquote class="replbq" style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"> Salut,<br><br>OS: Linux<br>Disclaimer: I might be missing something<br>(ma voi referi doar la LibMonitor, nu la LibRW)<br><br>Din ce au compilat altii, nu prea mi-am dat seama cum au rezolvat problema <br>aceasta. Din ce a compilat tavi, am presupus ca a incarcat dinamic (-ldl) <br>something unde sunt implementate functiile de control.<br><br>Reasoning path:<br>1. biblioteca noastra trebuie sa apeleze functiile definite in <br>CallbackMonitor.h.<br><br>2. ca sa le poata apela, trebuie ca acestea sa fie definite undeva, descopar <br>ca sunt definite in _test/ControlMonitor.c.<br><br>3. in aceste conditii, daca nu includ manual acest fisier in sursele mele, eu <br>trebuie sa pot link-a _test/ControlMonitor.o in biblioteca mea atunci cand <br>apelez (folosesc C++): g++ -shared (lista fisiere
 obiect compilate <br>cu -fPIC) -o LibMonitor.so<br><br>4. Urmaring modul de utilizare al lui Makefile.checker (+ continutul lui) din <br>http://cs.pub.ro/~so/index.php?section=Teme&amp;file=Tema%203#Testare<br>descopar ca _test/ControlMonitor.o (si _test/ControlRW.o) sunt create DUPA ce <br>biblioteca mea se link-editeaza =&gt; on a clean run (=no .o files around), <br>linking-ul meu cu respectivul fisier obiect nu va merge. Solutie: cele 2 <br>fisiere obiect pentru control ar trebui mutate in target-ul build-pre &lt;== <br>PROBLEMA NR. 1<br>   <br> La linkarea pentru LibMonitor.so, linkezi si _test/ControlMonitor.o (cu g++).&nbsp; Va genera&nbsp; automat&nbsp; si .o-ul. <br> Din ce spui tu inteleg ca ai incercat efectiv acest lucru si <br> nu merge?<br> <br><br>6. Chiar si asa, programul meu compilat cu g++-ul, nu se poate folosi de <br>definitiile din CallbackMonitor.h deoarece simpla includere a acestora va <br>rezulta in aparitia unor simboluri mangle-uite la nume, ca
 asa face C++-ul =&gt; <br>nu se va link-edita cu fisierul obiect compilat cu gcc-ul <br>_test/ControlMonitor.o. Solutia a fost utilizarea in CallbackMonitor.h a:<br><br>// header inclusion check<br><br>#ifdef __cplusplus<br>extern "C" {<br>#endif<br><br>// definitions<br><br>#ifdef __cplusplus<br>}<br>#endif<br><br>Probabil, acelasi lucru trebuie facut si in CallbackRW.h - nu am ajuns inca in <br>respectivul punct.<br>   <br>   <br> Este adevarat. Totusi, nu trebuie neaparat sa incluzi .h-urile<br> date. Poti sa iti faci propriile .h-uri (cu extern C).<br><br>Este corect ce am spus eu mai sus... sau imi scapa ceva?<br>Ce alte solutii/implementari a mai gasit lumea?<br><br><br>Numai bine,<br>Mircea<br><br>-- <br>Dream as if you'll live forever. Live as if you'll die today.<br>http://mircea.bardac.net<br>_______________________________________________<br>so mailing
 list<br>so@cursuri.cs.pub.ro<br>http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so<br></blockquote><br><p>&#32;

<hr size=1>Access over 1 million songs - <a href="http://pa.yahoo.com/*http://us.rd.yahoo.com/evt=36035/*http://music.yahoo.com/unlimited/">Yahoo! Music Unlimited.</a>