我用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部分,不启动对话框的啊:(