首页
论坛
课程
招聘
[求助]这个诡异的c++符号怎么声明
2014-8-25 08:22 3679

[求助]这个诡异的c++符号怎么声明

2014-8-25 08:22
3679
error LNK2001: unresolved external symbol "public: int (__stdcall*__thiscall CDllFunc::GetProc(char *))(void)" (?GetProc@CDllFunc@@QAEP6GHXZPAD@Z)

C:\Users\Administrator\Desktop\测试.exe : fatal error LNK1120: 1 unresolved externals

我的程序链接某lib静态库时,提示这个错误,我想知道怎么声明和写出那个符号,指(public: int (__stdcall*__thiscall CDllFunc::GetProc(char *))(void));

ps,从没见过这样的符号,拦路虎啊~

[注意] 欢迎加入看雪团队!base上海,招聘安全工程师、逆向工程师多个坑位等你投递!

收藏
点赞0
打赏
分享
最新回复 (5)
雪    币: 2
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
唱哥 活跃值 2014-8-25 08:39
2
0
看 msdn , 记得类中函数只声明, 没定义时. 会有这种错误.
雪    币: 199
活跃值: 活跃值 (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
ganboing 活跃值 1 2014-8-25 09:06
3
0
typedef int(*__stdcall FuncPtr_t)(void);

class CDllFunc{
public:
        FuncPtr_t GetProc(char*);
};
雪    币: 199
活跃值: 活跃值 (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
ganboing 活跃值 1 2014-8-25 09:08
4
0
就是一个CDllFunc成员函数, 参数为char*, 返回值为一个函数指针,函数指针指向的函数类型为

int __stdcall Func(void)
雪    币: 346
活跃值: 活跃值 (27)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
学雄 活跃值 1 2014-8-25 11:09
5
0
非常感谢楼上的,正确的写法是
typedef int(__stdcall* FuncPtr_t)(void);  ->>>这个星号得放对位置.

class CDllFunc{
public:
       
        FuncPtr_t GetProc(char*);
       
};

FuncPtr_t CDllFunc::GetProc(char*)
{
        return 0;
}
雪    币: 199
活跃值: 活跃值 (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
ganboing 活跃值 1 2014-8-25 20:39
6
0
恩,不过我一般喜欢放在__stdcall这样的调用协定的修饰之前,其实之前之后都是可以的(放之后应该更标准些吧),实验证明符号也一致。
游客
登录 | 注册 方可回帖
返回