Oct_32第五日:一些小错误!
error C2665: “AfxMessageBox”: 2 个重载中没有一个可以转换所有参数类型
解决方案:
(1)将: AfxMessageBox("xxx");变成 :AfxMessageBox(_T("xxx"));
(2) 选择 “项目” 菜单->项目属性->配置属性->常规->字符集,改为 “未设置”
1. extern用在变量声明中常常有这样一个作用,你在*.c文件中声明了一个全局的变量,这个全局的变量如果要被引用,就放在*.h中并用extern来声明。
2.如果函数的声明中带有关键字extern,仅仅是暗示这个函数可能在别的源文件里定义,没有其它作用。
即:在Download.cpp文件中的代码:
// CDownload 对话框
extern SERVER_INFO serverinfo[MAXIPNUMBER]; //
extern CLIENTPARAM ClientParam;
运行的时候出现:
Download.obj : error LNK2001: 无法解析的外部符号"struct SERVER_INFO * serverinfo" (?serverinfo@@3PAUSERVER_INFO@@A)
Download.obj : error LNK2001: 无法解析的外部符号"struct CLIENTPARAM ClientParam" (?ClientParam@@3UCLIENTPARAM@@A)
./Debug/EyesomMonitorFile.exe : fatal error LNK1120: 2 个无法解析的外部命令
以上出错解决方案:
在Download.h头文件中添加代码如下:
class CDownload : public CDialog
{
DECLARE_DYNAMIC(CDownload)
public:
CDownload(CWnd* pParent = NULL); // 标准构造函数
SAVE_INFO infor[MAXVIEWNUM];
SERVER_INFO serverinfo[MAXIPNUMBER]; //不要在.cpp文件中声明
CLIENTPARAM ClientParam;
提 要:
vc GetWindowRect
函数原型:
BOOL GetWindowRect(HWND hWnd,LPRECTlpRect);
参数:hWnd:窗口句柄。
函数功能:该函数返回指定窗口的边框矩形的尺寸。该尺寸以相对于屏幕坐标左上角的屏幕坐标给出。
函数原型:BOOL GetWindowRect(HWND hWnd,LPRECTlpRect);
参数:
hWnd:窗口句柄。
lpRect:指向一个RECT结构的指针,该结构接收窗口的左上角和右下角的屏幕坐标。
返回值:如果函数成功,返回值为非零:如果函数失败,返回值为零。
若想获得更多错误信息,请调用GetLastError函数。
问题: error C2664: “strcpy”: 不能将参数2 从“CString”转换为“const char *”
没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符
解决方案
原代码:
strcpy(buffer, ClientParam.m_csDownLoadPath);
strcat(buffer,csIP);
修改为:strncpy(目标,源,长度),
strcpy(buffer,(LPSTR)(LPCTSTR)ClientParam.m_csDownLoadPath);
strcat(buffer,(LPSTR)(LPCTSTR)csIP);
原因“csIP”必须为const char *类型的。而给的是CString.
// CLocalFilePlay dialog
#define TIMER_INTERVAL 500
#define USED_PORT 99
extern SERVER_INFO serverinfo[MAXIPNUMBER];
extern CLIENTPARAM ClientParam;
BOOL g_bCapPic=FALSE;
-==========================================
出现错误 正在链接...
LocalFile.obj : error LNK2001: 无法解析的外部符号"struct SERVER_INFO * serverinfo" (?serverinfo@@3PAUSERVER_INFO@@A)
LocalFile.obj : error LNK2001: 无法解析的外部符号"struct CLIENTPARAM ClientParam" (?ClientParam@@3UCLIENTPARAM@@A)
./Debug/EyesomMonitorFile.exe : fatal error LNK1120: 2 个无法解析的外部命令
解决方案 把
extern SERVER_INFO serverinfo[MAXIPNUMBER];
extern CLIENTPARAM ClientParam;
变成
SERVER_INFO serverinfo[MAXIPNUMBER];
CLIENTPARAM ClientParam;
error C2665: “AfxMessageBox”: 2 个重载中没有一个可以转换所有参数类型
解决方案:
(1)将: AfxMessageBox("xxx");变成 :AfxMessageBox(_T("xxx"));
(2) 选择 “项目” 菜单->项目属性->配置属性->常规->字符集,改为 “未设置”
1. extern用在变量声明中常常有这样一个作用,你在*.c文件中声明了一个全局的变量,这个全局的变量如果要被引用,就放在*.h中并用extern来声明。
2.如果函数的声明中带有关键字extern,仅仅是暗示这个函数可能在别的源文件里定义,没有其它作用。
即:在Download.cpp文件中的代码:
// CDownload 对话框
extern SERVER_INFO serverinfo[MAXIPNUMBER]; //
extern CLIENTPARAM ClientParam;
运行的时候出现:
Download.obj : error LNK2001: 无法解析的外部符号"struct SERVER_INFO * serverinfo" (?serverinfo@@3PAUSERVER_INFO@@A)
Download.obj : error LNK2001: 无法解析的外部符号"struct CLIENTPARAM ClientParam" (?ClientParam@@3UCLIENTPARAM@@A)
./Debug/EyesomMonitorFile.exe : fatal error LNK1120: 2 个无法解析的外部命令
以上出错解决方案:
在Download.h头文件中添加代码如下:
class CDownload : public CDialog
{
DECLARE_DYNAMIC(CDownload)
public:
CDownload(CWnd* pParent = NULL); // 标准构造函数
SAVE_INFO infor[MAXVIEWNUM];
SERVER_INFO serverinfo[MAXIPNUMBER]; //不要在.cpp文件中声明
CLIENTPARAM ClientParam;
提 要:
vc GetWindowRect
函数原型:
BOOL GetWindowRect(HWND hWnd,LPRECTlpRect);
参数:hWnd:窗口句柄。
函数功能:该函数返回指定窗口的边框矩形的尺寸。该尺寸以相对于屏幕坐标左上角的屏幕坐标给出。
函数原型:BOOL GetWindowRect(HWND hWnd,LPRECTlpRect);
参数:
hWnd:窗口句柄。
lpRect:指向一个RECT结构的指针,该结构接收窗口的左上角和右下角的屏幕坐标。
返回值:如果函数成功,返回值为非零:如果函数失败,返回值为零。
若想获得更多错误信息,请调用GetLastError函数。
问题: error C2664: “strcpy”: 不能将参数2 从“CString”转换为“const char *”
没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符
解决方案
原代码:
strcpy(buffer, ClientParam.m_csDownLoadPath);
strcat(buffer,csIP);
修改为:strncpy(目标,源,长度),
strcpy(buffer,(LPSTR)(LPCTSTR)ClientParam.m_csDownLoadPath);
strcat(buffer,(LPSTR)(LPCTSTR)csIP);
原因“csIP”必须为const char *类型的。而给的是CString.
// CLocalFilePlay dialog
#define TIMER_INTERVAL 500
#define USED_PORT 99
extern SERVER_INFO serverinfo[MAXIPNUMBER];
extern CLIENTPARAM ClientParam;
BOOL g_bCapPic=FALSE;
-==========================================
出现错误 正在链接...
LocalFile.obj : error LNK2001: 无法解析的外部符号"struct SERVER_INFO * serverinfo" (?serverinfo@@3PAUSERVER_INFO@@A)
LocalFile.obj : error LNK2001: 无法解析的外部符号"struct CLIENTPARAM ClientParam" (?ClientParam@@3UCLIENTPARAM@@A)
./Debug/EyesomMonitorFile.exe : fatal error LNK1120: 2 个无法解析的外部命令
解决方案 把
extern SERVER_INFO serverinfo[MAXIPNUMBER];
extern CLIENTPARAM ClientParam;
变成
SERVER_INFO serverinfo[MAXIPNUMBER];
CLIENTPARAM ClientParam;