1
已經解決!See the result here。可以從.h文件生成dlsym命令嗎?
不知道我是否在正確的地方問,但有沒有人知道基於.h文件生成dlopen和dlsym命令的正確方法?
我想動態加載SDL2 - 這是一個用C編寫的庫 - 但所有提取函數列表和他們的參數與ctags的方法似乎沒有結果(必須手動更正240個函數的參數列表3500是不好玩)。
ctags -R -x --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ -f sdl /usr/include/SDL2/
從ctags的結果是這樣的:
extern DECLSPEC int SDLCALL SDL_SetTextureColorMod (SDL_Texture * texture,
extern DECLSPEC int SDLCALL SDL_SetThreadPriority (SDL_ThreadPriority priority);
extern DECLSPEC void SDLCALL SDL_SetWindowBordered (SDL_Window * window,
此:
ctags -R -x --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ -f sdl /usr/include/SDL2/ | grep "SDL_AddTimer"
息率這種結果:
SDL_AddTimer prototype 93 /usr/include/SDL2/SDL_timer.h extern DECLSPEC SDL_TimerID SDLCALL SDL_AddTimer(Uint32 interval,
通知時間間隔後缺少參數。它壞了。
而且我還看到this是一件東西,它顯然是自動生成的,而不是手動生成的。
所以...有沒有人知道任何方式來自動生成類似的東西?特別是對於SDL2?
或者我應該只使用SDL函數,並手動dlsym它們?不要問爲什麼我不願意只是鏈接而不是使用dlopen和dlsym。
嘗試doxygen的xml輸出,也許你比ctags得到更好的結果? –
我已經嘗試過ctags,但結果並不令人滿意 - 幾個函數的參數列表因未知原因而中斷,使我留下的參數列表不完整 - 大約240個函數中有240個出現此問題。我會嘗試doxygen。 –
您可以使用[Implib.so](https://github.com/yugr/Implib.so)自動生成SDL API的包裝,這將在需要時透明地緩存庫(或稱呼您的回調)。 – yugr