【发布时间】:2015-08-06 04:18:15
【问题描述】:
我必须用 C++ 制作一个 DLL 时间测试程序,它可以加载 DLL 并尝试它们的功能,测试是否给出正确的结果并检查运行它们所需的时间。 所以这意味着我将在我的程序执行期间收到一个 DLL 或不同的 DLL,加载它们并调用它们的函数,而不知道函数有多少参数(在编译我的程序之前)。
所以我知道我不能声明指向 GetProcAddress 需要的函数的指针,除非我动态声明(我不知道我是否可以在 c++ 中这样做)。
既不动态包含 DLL 的标头。
我能找到的唯一解决方案是我的程序生成一个新的 c 或 c++ 文件,其中包含调用 DLL 函数、编译、启动它所必需的所有东西......
你能给我意见和想法吗,也许在 C++ 中有一种方法可以做到这一点,我正在跳过它。
我正在使用 C++,代码块 13.12 和 MinWG 4.8。
【问题讨论】:
-
听起来你是对的,在编译语言中,我没有看到比动态代码生成更简洁的替代方案。
-
您会以什么形式收到有关如何调用函数的说明?假设您需要测试一个接收两个
char*的函数。你应该怎么做? -
程序可以访问函数名、索引、参数、返回类型的所有信息。但只有在编译之后。我只需要运行该函数来获取结果(用户将检查它是否正确)并检查调整它所花费的时间。这项工作对于解释语言来说听起来更好,但他们要求我使用 c++ 工作:S
-
查看 Python。它有一个模块来加载 DLL (docs.python.org/3/library/ctypes.html) 并调用它们的函数,显然之前没有任何关于它们的知识。这意味着那里可以使用低级接口以及如何传递参数。现在,您可以直接使用 Python(或至少构建一个原型),也可以阅读源代码以了解如何操作。附近:Python 也有一个用于计时事物持续时间的模块,这将节省您另外几个步骤。
-
“可以访问所有信息”。以什么形式?实际调用需要两个
char*参数的函数应该有哪些信息?