我想制作一个单元测试驱动程序。
上面写着tests.txt
内容如下:
I32 cdecl32 func(in I32, in szC8P32, out I32P32, out sC8P32)
in in out out ret out out ret ...
16 test 5 test2 1
被调用者有这样的声明:
int __cdecl func(const int, const char*, int*, char*);
测试驱动使用LoadLibrary
和GetProcAddress
获取函数的地址。
但是,驱动程序不会包含 func
的声明。它将用于测试其他功能类型。就像一个通用工具。
应通过解析 tests.txt
动态给出参数。
这可能吗?我该怎么办?
最佳答案
你想做的事情很棘手。您必须将函数的声明与 TXT 文件中的定义相匹配。如果它们不完全匹配,您将出现未定义的行为。
无论如何,你有两个选择:
- 测试驱动程序将生成一个带有函数原型(prototype)的 C 文件,并运行 C 编译器来生成所需的代码。
- 使用
libffi
,一个专为满足您的需求而设计的库。
关于c++ - 我可以让函数调用软编码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36531236/