Я сделал заявку в Visual Studio 2010 Express.Сначала я скомпилировал отладочную версию, и она работала безупречно, но после компиляции релизной версии он зависает.
Мое приложение должно работать следующим образом:
Я собрал версию BIOS для всех десктопов и автоматически обновит BIOSверсии.Они расположены на сетевом ресурсе, как \ myserver \ bios_update.Также есть папка Log в \\ myserver \ bios_update \ Log.Мое приложение создаст файл журнала в этой папке журнала следующим образом: \\ myserver \ bios_update \ log \ OptiPlex 780 \ hostname.txt Конечно, OptiPlex 780 - это тип модели ПК, и если он не существует, он будетбыть создан, потому что есть много типов моделей ПК.Если hostname.txt (имя хоста заменяется именем хоста компьютера) не существует, он также будет создан.
Интересно то, что пока все работало нормально, но после компиляции релизной версии мое приложение работает следующим образом.Если hostname.txt существует, то он работает нормально, но если нет, то он зависнет.Это похоже на бесконечный цикл, но я не знаю почему (я напечатал некоторые данные и знаю, почему я сказал бесконечный цикл).
Я заметил следующие вещи: Здесь моё приложение зависнет: if (folderexists (LogFolder)) LogFolder содержит путь типа \\ myserver \ bios_update \ Log \ Если hostname.txt не существует, мое приложениезамерзнет, но если он существует, то это нормально.Также, если я дам LogFolder без последнего \ like \ myserver \ bios_update \ Log, то это тоже нормально.Вот мой код:
bool folderexists( char * foldername )
{
if ( _access( foldername, 0 ) == 0 )
{
struct stat status;
stat( foldername, &status );
if ( status.st_mode & S_IFDIR )
{
//cout << "\nThe directory exists." << endl;
return true;
}
else
{
//cout << "\nThe path you entered is a file." << endl;
WriteToLog( "The path you entered is a file??????????????????", false );
return false;
}
}
else
{
//cout << "\nPath doesn't exist." << endl;
return false;
}
}//folderexists
void WriteToLog( char * text, bool star )
{
char time[ SMALL ], LogModel[ MEDIUM ], Day[ SMALL ], Month[ SMALL ];
FILE *logfile;
memset( time, 0, sizeof( time ) );
memset( Day, 0, sizeof( Day ) );
memset( Month, 0, sizeof( Month ) );
SYSTEMTIME lt;
GetLocalTime( < );
GetDayAndMonth( lt.wDayOfWeek , Day, lt.wMonth, Month );
sprintf( time, "[%s %s %d %02d:%02d:%02d]", Day, Month, lt.wDay, lt.wHour, lt.wMinute, lt.wSecond );
//printf("\nThe local time is: %02d:%02d\n", lt.wHour, lt.wMinute);
if ( !file_exists( LogFile ) )
{
memset( LogModel, 0, sizeof( LogModel ) );
strcpy( LogModel, LogFolder );
strcat( LogModel, PCModel );
if ( folderexists( LogFolder ) ) <== Here is where my App freeze!!!!!!!
{
if ( !folderexists( LogModel ) )
{
if ( !CreateDirectoryA( LogModel, NULL ) ) ShowError( "CreateDirectoryA .............................. Failed! ( creating LogModel folder ) ", true, true );
}
}
else
{
printf( "\nLogFolder isn't reachable!" );
exit(-1);
}
}//file_exists
if ( ( logfile = fopen( LogFile, "a" ) ) == NULL )
{
ShowError( "Failed to create Logfile!", false, true );
}
else
{
fputs( time, logfile );
fputs( " - ", logfile );
fputs( text, logfile );
fputs( "\n", logfile );
if ( star ) fputs( "**********************************************************************************************************************\n", logfile );
fclose( logfile );
//if ( star ) exit( -1 );
}
}//WriteToLog
Любой совет ценится, потому что он сводит меня с ума, и я не могу понять, в чем проблема.