是否可以从 .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.
已经解决了! 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.