首页
社区
课程
招聘
[求助]这个诡异的c++符号怎么声明
发表于: 2014-8-25 08:22 4982

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

2014-8-25 08:22
4982
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,从没见过这样的符号,拦路虎啊~

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 2
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
2
看 msdn , 记得类中函数只声明, 没定义时. 会有这种错误.
2014-8-25 08:39
0
雪    币: 200
活跃值: (38)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
typedef int(*__stdcall FuncPtr_t)(void);

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

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

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

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