VC++/MFC 编译连接问题

来源:百度知道 编辑:UC知道 时间:2024/09/22 19:42:19
请教大牛,本人初学MFC,遇到如下的问题:
初始错误如下:
error C2440: “=”: 无法从“const char [3]”转换为“LPCWSTR”
出错语句:wndcls.lpszClassName="MM";//初始化类名
当把此句改为:wndcls.lpszClassName=(LPCWSTR)"MM";//初始化类名
报错如下:
error LNK2019: 无法解析的外部符号 _main,该符号在函数
___tmainCRTStartup 中被引用
Win_main.exe : fatal error LNK1120: 1 个无法解析的外部命令

编译环境:Visual Studio 2008

已尝试过的改正办法:
依次选择菜单:[项目] -> [XXX属性] -> [配置属性] -> [链接器] -> [高级] 在[入口点]里,写入mainCRTStartup。可是结果不成功。

跪求解决方案!!!!!!!!!!!!!!!!!不胜感激!!!!!

源程序附上:
#include<windows.h>
#include<stdio.h>
#include<string>
using namespace std;
LRESULT CALLBACK WinSTCProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
);
int WINAPI _tWinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPWSTR lpCmdLine,
int nShowCmd

第一种方法:
在前面加上
#pragma comment(linker, "/ENTRY:wWinMainCRTStartup")
主函数定义改为
int WINAPI wWinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPWSTR lpCmdLine,
int nShowCmd )

第二种方法:
[项目] -> [XXX属性] -> [配置属性]->[常规]->[字符集] 里面改成 多字符

加的LPCWSTR再改回去 也可以解决

PS1:
hwnd=CreateWindow((LPCWSTR)"MM Corporation",(LPCWSTR)"M Elite",WS_OVERLAPPEDWINDOW,0,0,600,400,NULL,NULL,hInstance,NULL);
这一句第一个参数有误 应和前面定义的wndcls.lpszClassName=(LPCWSTR)"MM"; 的一样 否则程序不会得到结果
PS2:
如果你要在Unicode下写的话 单纯的加上LPCWSTR最后会出现乱码
应该写成 L"MM" 的形式 中间键盘输入的一段要改为
TCHAR stchar[20];
wsprintf(stchar,L"Char is %d",wParam);
MessageBox(hwnd,stchar,L"MM Welcome",0);
才能正确显示

有问题可以百度hi我