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?