我可以让函数调用软编码吗?

时间:2016-04-10 14:49:27

标签: c++ c unit-testing visual-c++

我想制作单元测试驱动程序 它使用以下内容读取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*);

测试驱动程序使用LoadLibraryGetProcAddress来获取函数的地址 但是,驱动程序不会包含func的声明。它将用于测试其他功能类型。像通用工具一样 应该通过解析tests.txt来动态地给出参数。

有可能吗?我该怎么办?

1 个答案:

答案 0 :(得分:0)

你要做的事很棘手。您必须将函数的声明与TXT文件中的定义相匹配。如果它们不完全匹配,您将有未定义的行为。

无论如何,您有两种选择:

  1. 测试驱动程序将发出带有函数原型的C文件,并运行C编译器以生成所需的代码。
  2. 使用libffi,这是一个专为满足您的需求而设计的库。