Supponiamo di avere una libreria dinamica compilata: .dll
, .lib
, .so
ecc. È (teoricamente) possibile creare automaticamente un file di intestazione C per tale libreria? C'è uno strumento esistente che lo fa?
Intuitivamente mi sembra che dovrebbe essere possibile. Dopo tutto, il linker è in grado di trovare i simboli necessari all'interno della libreria dinamica e risolvere quei simboli in fase di runtime. Ma ancora, alcune informazioni potrebbero mancare. Se sì, quale? Tipi di argomenti? Il tipo di ritorno? So che quando una libreria C ++ viene compilata senza il flag "extern", con le informazioni sui tipi che sono incorporati nel nome. Questo tipo di libreria sarebbe "reverse-engineeringable"?
Aggiornamento. Grazie per tutte le risposte - sembra che ci sia un consenso sul fatto che in genere NON è possibile, a meno che uno non voglia provare veramente (I indovina esaminando l'assembly e vedendo quanti parametri vengono estratti dallo stack) OPPURE la libreria è compilata nella modalità di debug .
Lo scopo di questa domanda non è quello di offuscare la mia biblioteca, né di decompilarne una esistente. Piuttosto, è una domanda teorica: tale azione è possibile per una biblioteca generica? Il motivo della mia curiosità è che sto cercando di capire le implicazioni legali di avere una libreria con licenza GPL mentre i suoi file di intestazione sono concessi in licenza sotto licenza LGPL.