有没有办法通过地址作为原型从内存中调用函数? 这在windows上运行得很好,但我不知道如何使它在linux上运行主要是因为__cdecl约定。有没有办法在linux上做呢? gcc总是返回这个
错误:函数'void MyFunction(int)'被初始化为变量
Windows代码:
void (WINAPIV *MyFunction)(int param) = (void (WINAPIV *)(int param))0x00000001;
void Print()
{
cout << "1" << endl;
}
#define __cdecl __attribute__((__cdecl__))
void (__cdecl *MyFunction)() = (void (__cdecl *)())&Print;
对不起,这是我的错,感谢工作。
答案 0 :(得分:2)
你究竟想在Linux / GCC上做什么?这对我有用(刚刚删除了WINAPIV部分):
void (*MyFunction)(int param) = (void (*)(int param))0x00000001;
无论如何,BTW,很多人都说有一个typedef使语法更容易,即:
typedef void (*MyFunctionType)(int param);
MyFunctionType myFunction = (MyFunctionType)0x00000001;