由于某些原因,我有很多用 C++ 编写的共享库函数,必须由 C 函数“包装”才能正确调用。现在,我想知道我是否可以自动化这个过程(最好能很好地集成到我的 CMake-build-process 中)
一个例子:假设我有函数定义
extern "C" void foo(Somestruct myinfo, char const * const data, char const * const data2)
在我的 .hpp 文件中。现在我将这个定义更改为,说
C_WRAPPER void foo(Somestruct myinfo, ARG(1) data, ARG(3) data2)
使用一些宏,可以毫无问题地将其转换为原始形式 - 因此,从功能的角度来看,hpp 文件保持不变。
一些解析器现在应该读取这个文件并生成一个新的 c 文件,其中包含(例如)
extern void foo(Somestruct myinfo, char const * const, char const*const);
void foo_wrapper(Array everything) {
char * data1 = fromArray(array, 1);
char * data3 = fromArray(arary, 3);
foo(fromArray(0), data1, data3);
}
边界条件:总体布局看起来总是一样的。唯一的区别是ARG
s 的数量必须是恒定的。的参数ARG
给出数据在数组中的位置。
目前包装文件是手动编写的,过去由于界面变化而导致一些耗时的错误。这就是我想自动化这一步的原因。
您知道无需自己创建解析器即可存档此类内容的方法吗?如前所述,最好是适合我使用 CMake 构建过程的东西。