如果在移植过程中,出现一些搜索问题,找不到头文件或者一些其他问题时,需要改变project->VC directories->include 去加入头文件所在目录。
编译出现:
MSVCRTD.lib(crtexew.obj) : error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup
产生此类问题的原因是:
1. 当程序的main函数是
int main(){}
这样的写法,system 的SubSystem就是/SUBSYSTEM:CONSOLE
2. 当程序的main函数是
int main(int argc, char* argv[]){}
这样的写法,system 的SubSystem就是/SUBSYSTEM:CONSOLE
主要是因为main函数的入口和subsystem不匹配才会出现上面提及的问题。
结论:
当main函数的入口和subsystem不匹配时,一旦编译就会出现如下问题:
MSVCRTD.lib(crtexew.obj) : error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup
解决方法:
1、修改main函数
2、重设subsystem参数:
Project -> xxxx Properties -> Configuration Properties -> Linker -> System—>SubSystem
编程语言我使用的是VS 2008 C++。要注意的是,VS 2008有个BUG,会在运行时提示找不到VC90.pdb。官网给出了如下的解决方法:
C/C++ | General | Debug Information format | C7 Compatible (/Z7)
C/C++ | Code Generation | Enable String Pooling | Yes (/GF)
Linker | DEBUG | General Debug Info | Yes (/DEBUG)
设置完成后就可以开始我们的Gloox环境的搭建了。
新建一个Win32控制台应用程序。
由于gloox支持的字符集为UTF-8,所以不能使用Unicode字符集。更改项目->属性->常规->字符集->多字节字符集。
将你下载的Gloox开发包中src文件夹下除了example和test这两个文件夹,其余文件全部复制到项目文件加下,并将src改为gloox。
将config.h.win,message_example.cpp复制到项目文件加下,并将message_example.cpp添加解决方案管理器中。
在解决方案管理器中,新建一个筛选器“gloox”,将刚才拷贝至gloox中的文件全部添加至筛选器中。
打开message_example.cpp,修改所有的头文件,将“../”换为gloox即可。
添加lib库。
#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib,"Secur32.lib")
#pragma comment(lib,"Dnsapi.lib")
#pragma comment(lib,"Crypt32.lib")
此时,打开已经配置好的Openfire服务器,登陆。
新建一用户,例:用户名:abao 密码:123456
修改message_example.cpp中定义JID和Client客户端的语句为
JID jid( "abao@myserver.com/gloox" );//myserver.com是主机域名
j = new Client( jid, "123456" );
编译运行,在输出一堆状态字符后,你就可以看见让人欣喜的
Connected!