《Directx 9.0 3D 游戏开发编程基础》学习总结2--Init例程编译错误

来源:互联网 发布:nginx windows 开发 编辑:程序博客网 时间:2024/06/05 19:03

编译错误1不能将参数 从“const char [n]”转换为"LPCWSTR"

参考:http://blog.sina.com.cn/s/blog_5b9734c50100z2o3.html

如果你的程序在 ANSI 字符集运行,调用 MessageBox ,就相当于调用 MessageBoxA;同样 UNICODE字符集下,调用MessageBoxW。
MessageBoxW 支持 UNICODE;
MessageBoxA 支持 ANSI;

UNICODE与ANSI 有什么区别呢?简单的说,UNICODE版的字符比ANSI 的内存占用大,比如:
Win32程式中出现的标准定义 char 占一个字节,
而 char 的UNICODE版被定义成这样:
typedef unsigned short wchar_t ;占2个字节。

宽字节版函数中带有字符参数的都应该用宽字节版的字符参数,将字符串转换成宽字节很容易:
比如将 "Application Error" 转换成UNICODE版,只需在它前面使用一个定义了的宏,如下:
L"Application Error" ,或者TEXT("Application Error" )都可以。

所以字符参数前加上“L”宏,即可解决此问题。


编译错误2无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用

参考:http://blog.sina.com.cn/s/blog_6e6c5f230100p92p.html

这个问题表明你新建的是一个main类型函数(控制台程序),而你的程序中有窗口程序,显然是个win32函数,解决方法:
项目-属性-链接器-系统-子系统-把控制台该为windows

产生这个问题可能的原因是:你用vc建了一个控制台程序,它的入口函数应该是main, 而你使用了WinMain(现在才理解win32原来说的就是窗口程序,貌似英文版的vs用的少了)。