我用VS2005的向导创建了一个MFC对话框程序(名字为XXX),里边引用mysql.h对MySQL进行操作。
后来想把它改成既可以双击执行又可以作为NT服务执行(可执行文件名后加参数)的程序,在CXXXApp::InitInstance()中修改了一下:
//程序名后不加参数,也就是双击程序,则打开对话框
if(__argc==1)
{
CDiag dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
}
else if (nResponse == IDCANCEL)
{
}
}
else //作为NT服务运行
{
//启动服务
}如果在CXXXDlg::OnInitDialog()加入如下代码:
MYSQL* m_mysqlDB;
if (!( (m_mysqlDB = mysql_init((MYSQL*) 0)) &&
mysql_real_connect( m_mysqlDB, "localhost", "root","myoa888", NULL, 3306, NULL, 0) ))
{
mysql_close( m_mysqlDB ) ;
return FALSE;
}
则服务启动时报1053错误,如果不加折断代码,服务就可以正常启动。
请高手支招,这是为什么?如果以服务的方式启动的话在CXXXApp::InitInstance()中执行的应该是else部分,不启动对话框的啊:(
后来想把它改成既可以双击执行又可以作为NT服务执行(可执行文件名后加参数)的程序,在CXXXApp::InitInstance()中修改了一下:
//程序名后不加参数,也就是双击程序,则打开对话框
if(__argc==1)
{
CDiag dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
}
else if (nResponse == IDCANCEL)
{
}
}
else //作为NT服务运行
{
//启动服务
}如果在CXXXDlg::OnInitDialog()加入如下代码:
MYSQL* m_mysqlDB;
if (!( (m_mysqlDB = mysql_init((MYSQL*) 0)) &&
mysql_real_connect( m_mysqlDB, "localhost", "root","myoa888", NULL, 3306, NULL, 0) ))
{
mysql_close( m_mysqlDB ) ;
return FALSE;
}
则服务启动时报1053错误,如果不加折断代码,服务就可以正常启动。
请高手支招,这是为什么?如果以服务的方式启动的话在CXXXApp::InitInstance()中执行的应该是else部分,不启动对话框的啊:(
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货