Cześć,

Potrzebuje zrobić bibliotekę, która będzie pośredniczyć między dwoma bibliotekami. Dokładnie chodzi o to, że mam bibliotekę wyższego poziomu, która używa biblioteki niższego poziomu. Ja z moim produktem chciałbym wejść pomiędzy te dwie biblioteki - zaimplementować wszystkie funkcje biblioteki niższego poziomu dodając od siebie kilka dodatków. Problem w tym, że nie wiem jak skompilować coś takiego, żeby nie było problemów z powtarzającymi się nazwami funkcji.

Przykładowa funkcja:

void function(void) {
  do_something();
  function(); // biblioteka niższego poziomu
} 

na razie wymyśliłem tylko, że mógłbym opakować funkcje z biblioteki niższego poziomu poprzez zmiane ich nazw, np.

void wrap_function(void) { 
  function();
}

i potem używać takiego opakowania w pośredniczącej bibliotece:

void function(void) { 
  wrap_function();
}

Jednak jak próbuje coś takiego uruchomić dostaje Segmentation fault, bo funkcje się zapętlają:

(gdb) bt
#0 nfc_version () at main.c:5
#1 0x00000000004011fb in wrap_nfc_version ()
#2 0x0000000000400ddd in nfc_version () at main.c:5
#3 0x00000000004011fb in wrap_nfc_version ()
#4 0x0000000000400ddd in nfc_version () at main.c:5
#5 0x00000000004011fb in wrap_nfc_version ()
#6 0x0000000000400ddd in nfc_version () at main.c:5
#7 0x00000000004011fb in wrap_nfc_version ()
#8 0x0000000000400ddd in nfc_version () at main.c:5
#9 0x00000000004011fb in wrap_nfc_version ()
#10 0x0000000000400ddd in nfc_version () at main.c:5
#11 0x00000000004011fb in wrap_nfc_version ()
#12 0x0000000000400ddd in nfc_version () at main.c:5
#13 0x00000000004011fb in wrap_nfc_version ()
#14 0x0000000000400ddd in nfc_version () at main.c:5
(...)

Może ktoś miałby jakiś pomysł jak to obejść ?