es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Enlace a una librería en Linux sin encabezados.

Hola, estoy intentando vincular a una biblioteca sin encabezados. Escribí el prototipo exactamente como se define en la biblioteca, pero ld no puede enlazarlo.

readelf -Ws Release/libcef.so | grep KeyStringToDomKey

386822: 00000000066d73d0 328 FUNC LOCAL HIDDEN 17 ZN2ui16KeycodeConverter17KeyStringToDomKeyERKNSt3112basicstringIcNS111chartraitsIcEENS1_9allocatorIcEEEE

readelf -Ws main-6cf4e2.o | grep KeyStringToDomKey

  13: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND ZN2ui16KeycodeConverter17KeyStringToDomKeyERKNSt3112basicstringIcNS111chartraitsIcEENS1_9allocatorIcEEEE

“`

<h1>include <iostream></h1>

<h1>include <string></h1>

<h1>include "domkey.h"</h1>

namespace ui {
class KeycodeConverter {
public:
static DomKey KeyStringToDomKey(const std::string&);
};
}

using namespace std;

int main()
{
auto t = ui::KeycodeConverter::KeyStringToDomKey("t");
cout << "¡Hola Mundo!" << endl;
return 0;
}
““

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el enlazador no puede encontrar la definición para ui::KeycodeConverter::KeyStringToDomKey. El primer paso sería asegurarse de que la biblioteca que contiene esta función se enlace adecuadamente durante el proceso de compilación.

    Si la biblioteca se está enlazando pero aún así causa problemas, es posible que la función no se haya exportado correctamente en la biblioteca. En este caso, agregar declaraciones de exportación adecuadas a la biblioteca puede ayudar.

    También es importante tener en cuenta que si la biblioteca se compiló con un compilador o una versión de compilador diferente a la del código que se está enlazando, puede haber problemas de compatibilidad. En este caso, puede ser necesario volver a compilar la biblioteca y el código con el mismo compilador.

Comments are closed.