При компиляции в режиме МультиЗреед программа стала вываливаться на системную ошибку
["инструкция по адресу 0х0043e0f5 обратилась к памяти по адресу 0x00000000. Память не может быть "read"]
Никаких Мультизридных команд не добавлял.
Выпадает внутри Сишной функции, которая вызывает другую Сишную функцию API.
//-----------------------------------------------------------------
HB_FUNC( WINSERVICERUN ) // WinServiceRun( <ServiceName>, <ServiceMain()>)
{
HB_BOOL bRetVal = HB_FALSE;
SERVICE_TABLE_ENTRY lpServiceTable[ 2 ];
HB_TCHAR_COPYTO( s_lpServiceName, hb_parcx( 1 ), HB_SIZEOFARRAY( s_lpServiceName ) - 1 );
hb_strncpy( s_szHarbourEntryFunc, hb_parcx( 2 ), HB_SIZEOFARRAY( s_szHarbourEntryFunc ) - 1 );
lpServiceTable[ 0 ].lpServiceName = s_lpServiceName;
lpServiceTable[ 0 ].lpServiceProc = ( LPSERVICE_MAIN_FUNCTION ) hbwin_SvcMainFunction;
lpServiceTable[ 1 ].lpServiceName = NULL;
lpServiceTable[ 1 ].lpServiceProc = NULL;
if( StartServiceCtrlDispatcher( lpServiceTable ) )
bRetVal = HB_TRUE;
else
hbwapi_SetLastError( GetLastError() );
hb_retl( bRetVal );
}
Как понять - на чем падает программа?
Или придется в однопоточном режиме создавать хитрый цикл чтобы имитировать работу двух-трех потоков?