VS一个链接的问题与main函数问题

来源:互联网 发布:大学java考试题 编辑:程序博客网 时间:2024/05/18 01:01

如果在移植过程中,出现一些搜索问题,找不到头文件或者一些其他问题时,需要改变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文件夹下除了exampletest这两个文件夹,其余文件全部复制到项目文件加下,并将src改为gloox

 

config.h.winmessage_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中定义JIDClient客户端的语句为

JID jid( "abao@myserver.com/gloox" );//myserver.com是主机域名

j = new Client( jid, "123456" );

 

编译运行,在输出一堆状态字符后,你就可以看见让人欣喜的

Connected


0 0
原创粉丝点击