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?