Red de conocimiento informático - Material del sitio web - Cómo llamar a una biblioteca de enlaces dinámicos hecha en C en lenguaje C

Cómo llamar a una biblioteca de enlaces dinámicos hecha en C en lenguaje C

Enlazar archivo de encabezado de biblioteca:

head.h

clase A

{

público:

p>

A();

virtual ~A();

int gt()

int pt(); ;

privado:

int s;

};

firstso.cpp

#include lt; iostreamgt;

#include "head.h"

A::A(){}

A::~A(){}

int A::gt()

{

s=10

}

int A::pt; ()

{

std::coutlt;lt;slt;lt;std::endl

}

La compilación El comando es el siguiente:

g -shared -o libmy.so firstso.cpp

En este momento, el archivo libmy.so se genera y se copia en la biblioteca del sistema: /usr /lib/

Realizar encapsulación secundaria:

secso.cpp

#include lt; iostreamgt

#include "head.h; "

extern "C"

 {

int f();

int f()

{

A a;

a.gt();

a.pt(); >

}

 }

Comando de compilación:

gcc -shared -o sec.so secso.cpp -Lmy

.

En este momento, se genera el segundo archivo .so, en este momento la biblioteca cambia de una clase a una interfaz c

Copiar a /usr/lib

Iniciar. llamando a:

test .c

 #include "stdio.h"

 #include "dlfcn.h"

 #define SOFILE "sec.so"

int (*f)();

int main()

{

void *dp;

dp=dlopen (SOFILE, RTLD_LAZY);

f=dlsym(dp, "f");

f(); p>return 0;

}

El comando de compilación es el siguiente

gcc -rdynamic -s -o myapp test.c

Ejecute Z$./myapp

10

$