Использовать 32-битную разделяемую библиотеку из 64-битного приложения?
Я создал простую 32-битную разделяемую библиотеку Linux (.so) для своих оболочек рендеринга, но я столкнулся со стеной, когда понял, что могу только использовать их через 32-битные приложения ....................
Вот как выглядит мой код:
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>
И я компилирую как общие 32-битные библиотеки (.so) и загружаю их через основное приложение ...
Но теперь есть большая проблема. Мои библиотеки все 32-битные и возвращают 32-битные указатели, что означает, что я не могу использовать их через 64-битное приложение без перестройки всей базы кода библиотеки (!!!).
Поэтому я хотел бы спросить более опытных людей: как мне решить эту проблему? Можно ли использовать только одну общую библиотеку для обеих архитектур ???