Abrufen der Adresse einer nicht statischen Memberfunktion zum Auffinden ihrer gemeinsam genutzten BibliothekC++

Programme in C++. Entwicklerforum
Anonymous
 Abrufen der Adresse einer nicht statischen Memberfunktion zum Auffinden ihrer gemeinsam genutzten Bibliothek

Post by Anonymous »

Ich habe eine ähnliche Situation wie in einem Blog-Beitrag beschrieben: Eine sichtbare Inline-Member-Funktion wird von mehreren gemeinsam genutzten Bibliotheken aufgerufen, die möglicherweise mit unterschiedlichen Compilern oder Compiler-Optionen erstellt wurden. Und ich möchte für eine Funktion wissen, aus welcher gemeinsam genutzten Bibliothek sie stammt. Ich wusste, dass mir unter Linux int dladdr(void *addr, Dl_info *info); von die Antwort geben kann.
Für globale Funktionen und statische Memberfunktionen ist es einfach, void *adder mit reinterpret_cast zu erhalten, aber wie erhält man es für eine nicht statische Memberfunktion, deren Zeiger nicht einfach in void* umgewandelt werden kann? Zum Beispiel:

Code: Select all

#include 
#include 

struct __attribute__((visibility("default"))) A {
static void f() {}
void g() {}
};

void* fAddr = reinterpret_cast( &A::f );
//void* gAddr = ??? ( &A::g );

int main() {
Dl_info info;
dladdr(fAddr, &info);
std::cout

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post