+ -
当前位置:首页 → 问答吧 → VS2008 DLL

VS2008 DLL

时间:2011-12-01

来源:互联网

今天遇到一个灰常蛋疼的问题

我用VS2008建了一个DLL
里面有个类
class AFX_EXT_CLASS XXX
{
……
void AAA(TCHAR *pszSkin){}
void AAA(int a){}
……
}
为什么我调用AAA(int a){}正常
调用AAA(TCHAR *pszSkin)就会出现
error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: void __thiscall XXX::AAA(wchar_t *)" (__imp_?AAA@XXX@@QAEXPA_W@Z)

真是蛋疼得一逼啊

作者: HH272200901   发布时间: 2011-12-01

因为那个构造函数没有函数体啊

作者: hoya5121   发布时间: 2011-12-01

GetProcAddress 获取函数地址
http://baike.baidu.com/view/1523523.htm

作者: KID_coder   发布时间: 2011-12-01

会不会是工程字符集设定问题
AAA(TCHAR *pszSkin)
如果是多字节字符集,它的真实参数为char *,如果是unicode字符集,它的参数就是wchar_t *;
而在C++中
AAA(char *)

AAA(wchar_t *)
是两个函数,如果你DLL中是AAA(char *)的话,调用时用AAA(wchar_t *)就找不到了

作者: keiy   发布时间: 2011-12-01

操 好像真是编码的问题

我TM明明在DLL设置的是unicode
EXE也是设置的unicode 为啥会出问题呢 真是蛋疼死了

作者: HH272200901   发布时间: 2011-12-01

引用 4 楼 hh272200901 的回复:

操 好像真是编码的问题

我TM明明在DLL设置的是unicode
EXE也是设置的unicode 为啥会出问题呢 真是蛋疼死了
字符集一致还会出问题?

作者: dizuo   发布时间: 2011-12-01

那个 DLL是VS2003建的 我字节拿到VS2008里面去编译的
烦死我了 我再重新建一遍

作者: HH272200901   发布时间: 2011-12-01

那个 DLL是VS2003建的 我字节拿到VS2008里面去编译的
烦死我了 我再重新建一遍

作者: HH272200901   发布时间: 2011-12-01

那个 DLL是VS2003建的 我字节拿到VS2008里面去编译的
烦死我了 我再重新建一遍

作者: HH272200901   发布时间: 2011-12-01