Verwenden Sie eine gemeinsam genutzte 32-Bit-Bibliothek aus einer 64-Bit-Anwendung?

Ich habe eine einfache 32-Bit-Shared-Library (.so) für meine Rendering-Wrapper erstellt, aber ich bin an eine Wand gestoßen, als ich herausgefunden habe, dass ich sie nur mit 32-Bit-Anwendungen verwenden kann. ......

So sieht mein Code aus:

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>

Und ich kompiliere beide als gemeinsam genutzte 32-Bit-Bibliotheken (.so) und lade sie über die Hauptanwendung ...

Aber jetzt gibt es ein großes Problem. Meine Bibliotheken sind alle 32-Bit- und Rückgabe-32-Bit-Zeiger, was bedeutet, dass ich sie nicht über eine 64-Bit-Anwendung verwenden kann, ohne die gesamte Bibliothekscodebasis neu zu erstellen (!!!).

Deshalb möchte ich erfahrenere Leute fragen: Wie gehe ich mit diesem Problem um? Ist es möglich, für beide Architekturen nur eine einzige gemeinsam genutzte Bibliothek zu verwenden?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage