Use a biblioteca compartilhada de 32 bits do aplicativo de 64 bits?

Eu criei uma simples biblioteca compartilhada de 32 bits do linux (.so) para meus invólucros de renderização, mas acertei uma parede quando percebi que só posso usá-los através de aplicativos de 32 bits .............. ......

É assim que meu código se parece:

RendIFace.h:

<code>//Basic renderer interface
struct Renderer
{
    int type;
    ...other things
};
</code>

GLRend.c:

<code>#include "RendIFace.h"
struct Renderer* GLRendererCreate(int width,int height,int bytesPerPixel)
{
    struct Renderer* rend = (struct Renderer*)malloc(sizeof(Renderer));

    rend->type = GLR;
    ..other things

    return rend;
}
</code>

SDLRend.c:

<code>#include "RendIFace.h"
struct Renderer* SDLRendererCreate(int width,int height,int bytesPerPixel)
{
    struct Renderer* rend = (struct Renderer*)malloc(sizeof(Renderer));

    rend->type = SDLR;
    ..other things

    return rend;
}
</code>

E eu compilo tanto como bibliotecas compartilhadas de 32 bits (.so) e as carrego através do aplicativo principal ...

Mas agora há um grande problema. Minhas bibliotecas são todas de 32 bits e retornam ponteiros de 32 bits, o que significa que não posso usá-las através de um aplicativo de 64 bits sem recriar toda a base de código da biblioteca (!!!).

Então, eu gostaria de perguntar a pessoas mais experientes: Como eu lidei com esse problema? É possível usar apenas uma única biblioteca compartilhada para ambas as arquiteturas ???

questionAnswers(2)

yourAnswerToTheQuestion