Can dlsym commands be generated from a .h file?
已解决!在此处查看结果。
不确定我是否在正确的位置询问,但是有人知道基于.h文件生成dlopen和dlsym命令的正确方法吗?
我正在尝试动态加载SDL2-这是一个用C语言编写的库-但所有使用ctags提取函数及其参数列表的方法似乎都是徒劳的(要手动纠正3500个模块中的240个函数的参数列表并非如此)有趣)。
1 | ctags -R -x --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ -f sdl /usr/include/SDL2/ |
ctags的结果如下:
1 2 3 | 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, |
此:
1 | ctags -R -x --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ -f sdl /usr/include/SDL2/ | grep"SDL_AddTimer" |
产生这种结果:
1 | SDL_AddTimer prototype 93 /usr/include/SDL2/SDL_timer.h extern DECLSPEC SDL_TimerID SDLCALL SDL_AddTimer(Uint32 interval, |
在间隔之后注意缺少的参数。坏了。
我也看到这是一个东西,它显然是自动生成的,而不是手工制作的。
那么...有人知道有什么方法可以自动生成类似的东西吗?尤其是对于SDL2?
还是我应该只使用SDL函数,并手动对其进行dlsym?不要问为什么我不愿意只链接而不是使用dlopen和dlsym。
我通过使用decltype解决了这个问题。
1 | typedef decltype(SDL_RenderDrawRects)* PF_SDL_RenderDrawRects; |
这样,我将不需要该函数的参数列表。package器在这里找到。