是否可以从 .h 文件生成 dlsym 命令?

Can dlsym commands be generated from a .h file?

已经解决了! See the result here.

不确定我问的地方是否正确,但是有人知道基于 .h 文件生成 dlopen 和 dlsym 命令的正确方法吗?

我正在尝试动态加载 SDL2——这是一个用 C 编写的库——但是所有使用 ctags 提取函数列表及其参数的方法似乎都没有结果(必须手动更正 3500 个函数中的 240 个函数的参数列表不好玩)。

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 它们吗?不要问我为什么不愿意只link而不是使用dlopen和dlsym。

我使用 decltype 解决了这个问题。

typedef decltype(SDL_RenderDrawRects)* PF_SDL_RenderDrawRects;

这样,我就不需要函数的参数列表了。 The wrappers are found here.