使用wxWidgets库链接wxString出错的问题

来源:互联网 发布:飞控led显示屏软件 编辑:程序博客网 时间:2024/06/08 06:49

wxWidgets是一个跨平台的代码库。今天由于一个示例代码需要用到,所以下载编译了。下载合适版本的wxWidgets,然后在build里面打开程序文件wx.dsw,(这是静态库方式编译,wx_dll.dsw是动态dll方式编译,粗略看了一下帮助文件,大概理解是这样,没有继续细看)编译完成后,在vc设置中加入include和lib的目录。在需要用到wxWidgets的工程中,编译成功,但链接却出现问题。错误如下:

------------------------------------------------------

------------------------------------------------------

1>kalman.obj : error LNK2019: 无法解析的外部符号 "protected: void __thiscall wxStringBase::InitWith(wchar_t const *,unsigned int,unsigned int)" (?InitWith@wxStringBase@@IAEXPB_WII@Z),该符号在函数 "public: __thiscall wxStringBase::wxStringBase(wchar_t const *)" (??0wxStringBase@@QAE@PB_W@Z) 中被引用
1>parser.obj : error LNK2019: 无法解析的外部符号 "public: class wxString __thiscall wxString::BeforeFirst(wchar_t)const " (?BeforeFirst@wxString@@QBE?AV1@_W@Z),该符号在函数 "void __cdecl parse(class wxString,float *,struct matrixDesc *)" (?parse@@YAXVwxString@@PAMPAUmatrixDesc@@@Z) 中被引用
1>parser.obj : error LNK2019: 无法解析的外部符号 "public: class wxString __thiscall wxString::AfterFirst(wchar_t)const " (?AfterFirst@wxString@@QBE?AV1@_W@Z),该符号在函数 "void __cdecl parse(class wxString,float *,struct matrixDesc *)" (?parse@@YAXVwxString@@PAMPAUmatrixDesc@@@Z) 中被引用
1>parser.obj : error LNK2019: 无法解析的外部符号 "public: int __thiscall wxString::Freq(wchar_t)const " (?Freq@wxString@@QBEH_W@Z),该符号在函数 "void __cdecl parse(class wxString,float *,struct matrixDesc *)" (?parse@@YAXVwxString@@PAMPAUmatrixDesc@@@Z) 中被引用
1>parser.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall wxFFile::wxFFile(wchar_t const *,wchar_t const *)" (??0wxFFile@@QAE@PB_W0@Z),该符号在函数 "void __cdecl parse(class wxString,float *,struct matrixDesc *)" (?parse@@YAXVwxString@@PAMPAUmatrixDesc@@@Z) 中被引用
1>parser.obj : error LNK2001: 无法解析的外部符号 "wchar_t const * const wxEmptyString" (?wxEmptyString@@3PB_WB)
1>parser.obj : error LNK2019: 无法解析的外部符号 "public: class wxStringBase & __thiscall wxStringBase::append(unsigned int,wchar_t)" (?append@wxStringBase@@QAEAAV1@I_W@Z),该符号在函数 "public: class wxStringBase & __thiscall wxStringBase::operator+=(wchar_t)" (??YwxStringBase@@QAEAAV0@_W@Z) 中被引用
1>D:/VCProject/project/OpenCVStudyPrj/KalmanTracking/Debug/KalmanTracking.exe : fatal error LNK1120: 7 个无法解析的外部命令

------------------------------------------------------

------------------------------------------------------

错误提示是wxString没包含在库中,重新编译wxWidgets,检查包含目录等都做过了,还是不通。百思不得其解。于是运行它自带的sample目录下的lisbox工程,加入使用wxString的语句,编译,运行。一气呵成。这下更加蒙了。将编译不通过的那个工程的.h和.cpp文件拷到lisbox工程目录下。(此cpp文件使用到wxString类),加入代码,照样链接通过。这次好像看到了一点点曙光,于是将两个工程的设置一个个的对比,最后发现原来是配置->常规->字符集里面的设置不同导致的,原来的工程是:使用 Unicode 字符集,将它设为:未设置或者使用多字节字符集,重新编译链接,ok。

我X,搞了半天的wxWidgets,原来就一个设置问题搞死人。记录一下,有空也去研究一下wxWidgets,毕竟可以跨平台是一个很不错的东西。

原创粉丝点击