Użyj 32-bitowej biblioteki współdzielonej z aplikacji 64-bitowej?

Stworzyłem prostą linuxową 32-bitową bibliotekę współdzieloną (.so) dla moich opakowań renderujących, ale trafiłem na ścianę, kiedy zorientowałem się, że mogę ich używać tylko przez aplikacje 32-bitowe ......

Oto jak wygląda mój kod:

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>

Kompiluję zarówno jako współdzielone biblioteki 32-bitowe (.so), jak i ładuję je przez główną aplikację ...

Ale teraz jest duży problem. Moje biblioteki są wszystkie 32-bitowe i zwracają 32-bitowe wskaźniki, co oznacza, że ​​nie mogę ich używać przez 64-bitową aplikację bez odbudowywania całej bazy kodu biblioteki (!!!).

Chciałbym zapytać bardziej doświadczonych ludzi: Jak radzić sobie z tym problemem? Czy możliwe jest użycie tylko jednej biblioteki współdzielonej dla obu architektur?

questionAnswers(2)

yourAnswerToTheQuestion