在 C++ 上创建一个 __cdecl 到 __thiscall 的包装函数
Create a __cdecl to __thiscall wrapper function on c++
我需要使用 __cdecl
调用约定动态创建一个可以由外部库调用的函数,然后将调用重定向到 class 上的方法,有效地用作__thiscall
调用约定的代理。
主要思想是这个程序(program1
)应该从外部应用程序(program2
)接收一个函数指针,把它打包成一个object可以查询我们( program1
) 以了解是否应该调用 program2
,然后将其传递给库。
我对这样的 class 的 header 应该是什么样子有一个模糊的想法
template <typename F, class C>
class this_call_wrapper
{
public:
// Creates a wrapper function that calls `operator()` on `object`
// `operator()` should take the same arguments as `F`
this_call_wrapper(const C* object);
// Deallocates memory used by this and the wrapper
~this_call_wrapper();
// Returns the pointer to the function wrapper
F* get_wrapper();
private:
C* object;
F* wrapper;
};
是否有提供类似功能的库?如果没有,我如何在 C++ 中实现它?
我需要使用 __cdecl
调用约定动态创建一个可以由外部库调用的函数,然后将调用重定向到 class 上的方法,有效地用作__thiscall
调用约定的代理。
主要思想是这个程序(program1
)应该从外部应用程序(program2
)接收一个函数指针,把它打包成一个object可以查询我们( program1
) 以了解是否应该调用 program2
,然后将其传递给库。
我对这样的 class 的 header 应该是什么样子有一个模糊的想法
template <typename F, class C>
class this_call_wrapper
{
public:
// Creates a wrapper function that calls `operator()` on `object`
// `operator()` should take the same arguments as `F`
this_call_wrapper(const C* object);
// Deallocates memory used by this and the wrapper
~this_call_wrapper();
// Returns the pointer to the function wrapper
F* get_wrapper();
private:
C* object;
F* wrapper;
};
是否有提供类似功能的库?如果没有,我如何在 C++ 中实现它?