Visual Studio 2015 для совместимости кода Visual Studio 6

На Windows Server 2012 я установил Visual Studio 2015. Теперь мне нужно создать рабочий проект на основе Visual Studio C ++ 6 в VC ++ 2015, но он показывает различные ошибки и предупреждения, например:

1>------ Build started: Project: Exewrap, Configuration: Debug Win32
------ 1>  Pewrap.cpp 1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\include\afx.h(38): warning C4996: 'MBCS_Support_Deprecated_In_MFC': MBCS support in MFC is deprecated and may be removed in a future version of MFC. 1>  C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\include\afx.h(33): note: see declaration of 'MBCS_Support_Deprecated_In_MFC' 1>  _WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h) 1>c:\muazzam\exewrap\Pe.h(17): warning C4200: nonstandard extension used: zero-sized array in struct/union 1>  c:\muazzam\exewrap\Pe.h(17): note: Cannot generate copy-ctor or copy-assignment operator when UDT contains a zero-sized array 1>Pewrap.cpp(291): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\stdio.h(205): note: see declaration of 'fopen' 1>Pewrap.cpp(517): error C2065: 'i': undeclared identifier 1>Pewrap.cpp(546): error C2065: 'i': undeclared identifier 1>Pewrap.cpp(551): error C2065: 'i': undeclared identifier 1>Pewrap.cpp(361): warning C4996: 'stricmp': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name:
_stricmp. See online help for details. 1>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\string.h(568): note: see declaration of 'stricmp' 1>Pewrap.cpp(362): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use
_CRT_SECURE_NO_WARNINGS. See online help for details. 1>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\string.h(346): note: see declaration of 'strncpy' 1>Pewrap.cpp(364): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use
_CRT_SECURE_NO_WARNINGS. See online help for details. 1>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\string.h(346): note: see declaration of 'strncpy' 1>Pewrap.cpp(365): warning C4996: 'stricmp': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _stricmp. See online help for details. 1>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\string.h(568): note: see declaration of 'stricmp' 1>Pewrap.cpp(366): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\string.h(346): note: see declaration of 'strncpy' 1>Pewrap.cpp(368): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\string.h(346): note: see declaration of 'strncpy' 1>Pewrap.cpp(369): warning C4996: 'stricmp': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _stricmp. See online help for details. 1>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\string.h(568): note: see declaration of 'stricmp' 1>Pewrap.cpp(370): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use
_CRT_SECURE_NO_WARNINGS. See online help for details. 1>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\string.h(346): note: see declaration of 'strncpy' 1>Pewrap.cpp(372): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use
_CRT_SECURE_NO_WARNINGS. See online help for details. 1>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\string.h(346): note: see declaration of 'strncpy' 1>Pewrap.cpp(403): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\string.h(119): note: see declaration of 'strcpy' 1>Pewrap.cpp(409): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\string.h(346): note: see declaration of 'strncpy' 1>Pewrap.cpp(410): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\string.h(346): note: see declaration of 'strncpy' 1>Pewrap.cpp(411): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\string.h(346): note: see declaration of 'strncpy' 1>Pewrap.cpp(412): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\string.h(346): note: see declaration of 'strncpy' 1>Pewrap.cpp(480): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\string.h(119): note: see declaration of 'strcpy' 1>Pewrap.cpp(494): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\string.h(119): note: see declaration of 'strcpy' 1>Pewrap.cpp(566): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\stdio.h(205): note: see declaration of 'fopen'
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Я не видел никаких опций в диспетчере конфигурации для VC ++ 6.

Я думаю, могут быть некоторые другие параметры конфигурации, но я мало знаю об этом. Дайте мне знать, если кто-нибудь может помочь в этом.

Кроме того, мне нужно повторно использовать код и создать приложение с помощью кроссплатформенной IDE VS Studio 2015 для телефонов Android и IOS.

Итак, как обновить код VC ++ 6, который должен быть совместим с последней версией VC ++. Между тем это показывает:

Visual Studio 2012 и Visual Studio 2013 не поддерживают отладку приложений, созданных с помощью Visual C ++ 6; для отладки этих приложений используйте более ранние версии Visual Studio.

Должен ли я сначала обновить проект с VC ++ 6 -> VC ++ 2010, а затем построить проекты с более высокими версиями или есть прямой метод?

Обновление: код ошибки:

bool Pewrap::Process(PPROTECTIONDETAIL pDetail)
{
    LPVOID pPosition = NULL;
    LPVOID pImportBegin = NULL;
    DWORD dPosition = 0;
    DWORD dImportRva = 0;
    USERDATA SavedInfo;
    PIMAGE_IMPORT_DESCRIPTOR pImportDesc;
    PIMAGE_IMPORT_BY_NAME pImpByName;
    DWORD * ThunkPtr;
    PSIZEINFO pSize=NULL;
    PROTECTEDINFO ProtInfo;

    memset(&SavedInfo,0,sizeof(USERDATA));
    pResBase = 0;
    if(Loaded == true)
    {
        CloseFile();
    }
    if(Loaded == false)
    {
        if(LoadFile(EXTRASIZE)==false)
        {
            return false;
        }
    }
    if(pDetail->ProtType == PROTECTION_STRONG)
    {
        UseVGCrypt = 1;
        SavedInfo.ProtType = PROTECTION_STRONG;
    }
    else
    {
        UseVGCrypt = 0;
        SavedInfo.ProtType = PROTECTION_MEDIUM;
    }

    unsigned char ProdId[PROD_ID_LEN];
    memset(ProdId,0,sizeof(ProdId));

    if(GetProtectedInfo(pDetail->Destination,&ProtInfo)==false)
    {
        GenRsaPrime((DIGIT_T*)ProdId,MOD_SIZE);
        ProdId[0]= ProdId[0] & RSA_MESSAGE_HIGHBIT_MASK;    // needed for rsa algorithm. 

    }
    else
    {
        memcpy(ProdId,ProtInfo.prodid,PROD_ID_LEN);
        if(stricmp(pDetail->Author,"None")==0)
            strncpy(pDetail->Author,ProtInfo.Author,sizeof(pDetail->Author));
        else
            strncpy(ProtInfo.Author,pDetail->Author,sizeof(ProtInfo.Author));
        if(stricmp(pDetail->Title,"None")==0)
            strncpy(pDetail->Title,ProtInfo.Title,sizeof(pDetail->Title));
        else
            strncpy(ProtInfo.Title,pDetail->Title,sizeof(ProtInfo.Title));
        if(stricmp(pDetail->PubDate,"None")==0)
            strncpy(pDetail->PubDate,ProtInfo.PublishDate,sizeof(pDetail->PubDate));
        else
            strncpy(ProtInfo.PublishDate,pDetail->PubDate,sizeof(ProtInfo.PublishDate));
    }

    SetProtectedInfo(&ProtInfo,pDetail,ProdId);

//  GenRsaPrime((DIGIT_T*)ProdId,MOD_SIZE);
//  ProdId[0]= ProdId[0] & RSA_MESSAGE_HIGHBIT_MASK;    // needed for rsa algorithm. 


    memcpy(Key,ProdId,PROD_ID_LEN);

    if(pDetail->TestMode == FALSE)
    {
        RSACTX pubctx,prictx;
        SavedInfo.TestMode = 0;
        GetRsaCtx(&pubctx,(char*)pubcrykey,0);

        RsaCrypt(&pubctx,(char*)ProdId,sizeof(ProdId));
        memcpy(SavedInfo.ProductId,ProdId,PROD_ID_LEN);


    }
    else
    {
        SavedInfo.TestMode = 1;
        memcpy(SavedInfo.ProductId,ProdId,PROD_ID_LEN);
    }

    memset(pDetail->ProdId,0,sizeof(pDetail->ProdId));
    if(pDetail->TestMode == TRUE)
    {
        strcpy(pDetail->ProdId,"None");
    }
    else
    {
        BinToHex((char*)SavedInfo.ProductId,PROD_ID_LEN,pDetail->ProdId);
    }
    strncpy(SavedInfo.Author,pDetail->Author,sizeof(SavedInfo.Author)-1);
    strncpy(SavedInfo.Title,pDetail->Title,sizeof(SavedInfo.Title)-1);
    strncpy(SavedInfo.PublishDate,pDetail->PubDate,sizeof(SavedInfo.PublishDate)-1);
    strncpy(SavedInfo.RegUrl,pDetail->RegUrl,sizeof(SavedInfo.RegUrl)-1);
    if(pDetail->FreeWare == TRUE)   
    {
        SavedInfo.FreeWare = 1;
    }
    else
    {
        SavedInfo.FreeWare = 0;
    }

    if(UseVGCrypt)
    {
        VGInit(&ctx,Key,KEYLEN);
    }

    PIMAGE_SECTION_HEADER pSecHdr = GetLastSection();
    DWORD align=pImage->OptionalHeader.SectionAlignment;

    if(Length < (pSecHdr->PointerToRawData+pSecHdr->SizeOfRawData))
    {
        AfxMessageBox("Actual File Length is less than What is said in Header.\n"
            "The File Might be corrupt.");
        return false;
    }

    if(Length > (pSecHdr->PointerToRawData+pSecHdr->SizeOfRawData))
    {
        DWORD Size = Length - (pSecHdr->PointerToRawData+pSecHdr->SizeOfRawData);
        if(pSecHdr->Misc.VirtualSize < (pSecHdr->SizeOfRawData+Size))
        {
            pSecHdr->Misc.VirtualSize=pSecHdr->SizeOfRawData+Size;
            pSecHdr->Misc.VirtualSize= ((pSecHdr->Misc.VirtualSize / align) * align) + align;
            pImage->OptionalHeader.SizeOfImage=pSecHdr->VirtualAddress+pSecHdr->Misc.VirtualSize;
        }
        pSecHdr->SizeOfRawData += Size;
    }

    pPosition = GetWritePointer();
    if(pPosition == NULL)
        return false;
    dPosition = pSecHdr->VirtualAddress + pSecHdr->SizeOfRawData;

    memcpy((char*)pPosition,asmStub,sizeof(asmStub));
    pPosition = ADDPTR(LPVOID,pPosition,sizeof(asmStub));

    pSize = (PSIZEINFO)pPosition;

    pPosition = ADDPTR(LPVOID,pPosition,sizeof(SIZEINFO));
    dPosition += sizeof(asmStub)+sizeof(SIZEINFO);

    pImportBegin = pPosition;

    IMAGE_DATA_DIRECTORY NullDirectory = { 0,0 };
    SavedInfo.ImportDataDirectory = pImage->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT];
    SavedInfo.TlsDataDirectory = pImage->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_TLS];
    SavedInfo.BoundImportDirectory = pImage->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT];

    pImage->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_TLS] = NullDirectory;
    pImage->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT] = NullDirectory;

    pImportDesc =(PIMAGE_IMPORT_DESCRIPTOR) pPosition;
    pImportDesc->ForwarderChain = 0;
    pImportDesc->TimeDateStamp = 0;

    dPosition+= sizeof(IMAGE_IMPORT_DESCRIPTOR)*2;
    pImportDesc->Name = dPosition ;

    pPosition = ADDPTR(LPVOID,pPosition,(sizeof(IMAGE_IMPORT_DESCRIPTOR) *2));
    strcpy((char*)pPosition,KERNEL32);
    pPosition = ADDPTR(LPVOID,pPosition,sizeof(KERNEL32));
    dPosition+=sizeof(KERNEL32);

    pImportDesc->FirstThunk = dPosition;
    ThunkPtr = (DWORD*) pPosition;

    pPosition = ADDPTR(LPVOID,pPosition,(NO_OF_FUNCTIONS +1)* sizeof(IMAGE_THUNK_DATA));
    dPosition += ((NO_OF_FUNCTIONS +1)* sizeof(IMAGE_THUNK_DATA));

    for(int i=0;i<NO_OF_FUNCTIONS;i++)
    {
        pImpByName = (PIMAGE_IMPORT_BY_NAME)pPosition;
        pImpByName->Hint=0;
        strcpy((char*)pImpByName->Name,FunctionArray[i]);
        *ThunkPtr = dPosition;
        ThunkPtr++;
        pPosition = ADDPTR(LPVOID,pPosition,(sizeof(WORD) + strlen(FunctionArray[i])+1));
        dPosition += (sizeof(WORD) + strlen(FunctionArray[i])+1);
    }

    *ThunkPtr = 0;
    pImportDesc++;
    memset(pImportDesc,0,sizeof(IMAGE_IMPORT_DESCRIPTOR));

    dImportRva = pSecHdr->VirtualAddress + pSecHdr->SizeOfRawData + SUBPTR(DWORD,pImportBegin,GetWritePointer());

    DWORD ImportSize = SUBPTR(DWORD,pPosition,pImportBegin);
    pImage->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].Size = ImportSize;
    pImage->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress = dImportRva;

    SavedInfo.OriginalEntryPoint = pImage->OptionalHeader.AddressOfEntryPoint;

    pImage->OptionalHeader.AddressOfEntryPoint = pSecHdr->VirtualAddress + pSecHdr->SizeOfRawData;

    PIMAGE_SECTION_HEADER pSecHdrTmp;
    pSecHdrTmp = pImage->SectionHeader;
    for(i=0;i<pImage->FileHeader.NumberOfSections;i++)
    {
        pSecHdrTmp->Characteristics = 0xe0000060;
        pSecHdrTmp++;
    }

    DWORD IncreasedSize = SUBPTR(DWORD,pPosition,GetWritePointer());
    DWORD ExtendedMapSize = IncreasedSize;

    pSize->ImportDataSize = ImportSize;
    pSize->UserDataSize = sizeof(USERDATA);
    pSize->DllDataSize = sizeof(rawData);

    IncreasedSize+= pSize->UserDataSize;
    IncreasedSize+= pSize->DllDataSize;

    IncreasedSize+= sizeof(PROTECTEDINFO);


    if(pSecHdr->Misc.VirtualSize < (pSecHdr->SizeOfRawData+IncreasedSize))
    {
        pSecHdr->Misc.VirtualSize=pSecHdr->SizeOfRawData+IncreasedSize;
        pSecHdr->Misc.VirtualSize= ((pSecHdr->Misc.VirtualSize / align) * align) + align;
        pImage->OptionalHeader.SizeOfImage=pSecHdr->VirtualAddress+pSecHdr->Misc.VirtualSize;
    }

    pSecHdr->SizeOfRawData += IncreasedSize;
    PIMAGE_SECTION_HEADER pEncSecHdr = pImage->SectionHeader;

    for(i=0;i<pImage->FileHeader.NumberOfSections;i++)
    {
        if(CanEncryptSection(pEncSecHdr))
        {
            EncryptSection(pEncSecHdr);
            SavedInfo.EncryptedSections = SavedInfo.EncryptedSections | (0x80000000 >> i);
        }
        pEncSecHdr++;
    }

    if(CanEncryptResourceSection())
    {
        EncryptResourceSection();
        SavedInfo.ResourceEncrypted = RESOURCE_IS_INCRYPTED;
    }

//  DWORD temp = MapSize;
//  MapSize = Length + IncreasedSize;
//  SaveCopy("out.exe");

    FILE * f=fopen((LPCTSTR)pDetail->Destination,"wb");
    if(f==NULL)
    {
        CString msg;
        msg.Format("Could not open %s for output",pDetail->Destination);
        AfxMessageBox(msg);
        return false;
    }
    fwrite((char*)pBase,Length+ExtendedMapSize,1,f);

    DWORD Temp = UseVGCrypt = 0;
    memcpy(Key,GlobalKey,KEYLEN);
    EncryptData(&SavedInfo,sizeof(USERDATA));
    UseVGCrypt = Temp;

    fwrite((char*)&SavedInfo,sizeof(USERDATA),1,f);
    unsigned char * rd = new unsigned char[sizeof(rawData)];
    memcpy(rd,rawData,sizeof(rawData));
    CryptRawData(rd,sizeof(rawData));
    fwrite(rd,sizeof(rawData),1,f);
    delete rd;

    fwrite(&ProtInfo,sizeof(ProtInfo),1,f);

    fclose(f);

    return true;

}   

person Muhammad Muazzam    schedule 20.03.2016    source источник
comment
Без изменений? Довольно много. Языки меняются. Кто-то проигнорировал обслуживание, теперь расплачивайтесь.   -  person TomTom    schedule 20.03.2016
comment
Зачем нужно создавать его в Visual Studio 2015? Просто установите Visual C ++ 6 в виртуальную машину, на которой он будет работать.   -  person zeromus    schedule 20.03.2016
comment
@zeromus Мне нужно создать кроссплатформенное приложение с помощью VS 2015   -  person Muhammad Muazzam    schedule 20.03.2016
comment
определить кроссплатформенность   -  person zeromus    schedule 21.03.2016
comment
@zeromus вопрос отредактирован   -  person Muhammad Muazzam    schedule 21.03.2016
comment
Хорошо. Следующий шаг - забыть про Android и построить его в vs2015 для ПК. Удачи. Вам нужно будет решить каждое из 100000 сообщений об ошибках. Никакой волшебной пули.   -  person zeromus    schedule 21.03.2016
comment
Требуется более подробная информация о проблеме - это слишком общий вопрос. Существуют тысячи и тысячи проблем, которые могут возникнуть из-за кросс-переносимости платформ. И некоторые из предупреждений компиляции можно включить, например, некоторые определения. Но это зависит от реальной проблемы. Расскажите подробнее!   -  person TarmoPikaro    schedule 26.03.2016
comment
@TarmoPikaro Я хотел бы запустить VC ++ 6code на VC ++ 2015   -  person Muhammad Muazzam    schedule 28.03.2016
comment
опять же - зависит от предупреждений / ошибок, которые у вас есть. Например - это одна из проблем, которые я не переключал на vs2015: stackoverflow.com/questions/35805113/ - но я думаю, что это не то, что вы искали правильно? Опишите свои проблемы поподробнее ?!   -  person TarmoPikaro    schedule 28.03.2016
comment
Если единственные ошибки в вашем коде происходят из-за нестандартной области видимости идентификаторов VC ++ 6, объявленных в инициализаторе оператора for, быстрым исправлением может быть опция / Zc: forScope-   -  person Brian Nixon    schedule 29.03.2016
comment
@BrianNixon Это уже настроено   -  person Muhammad Muazzam    schedule 30.03.2016
comment
Я не советую решать подобные проблемы с помощью флагов компиляции. В том состоянии, в котором вы находитесь, подобные вещи с такой же вероятностью создают новые ошибки, как и решают их. Просто исправь код. У вас поразительно мало явных ошибок (1). На исправление потребуется около 2 секунд. Это может сделать любой программист на C.   -  person zeromus    schedule 01.04.2016


Ответы (3)


_CRT_SECURE_NO_WARNINGS - это всего лишь предупреждения - ваш код все равно будет компилироваться (и будет не менее безопасным, чем когда он был скомпилирован в VC ++ 6). Единственные ошибки, которые у вас есть (из вашего вывода), находятся в форме:

 Pewrap.cpp(551): error C2065: 'i': undeclared identifier

Я собираюсь предположить, что «i» - это индексная переменная цикла for, и что в вашем проекте VC ++ 6 используются языковые расширения Microsoft, так что объявления переменных цикла сохраняются после цикла. Я также собираюсь предположить, что в вашем проекте VS2015 включен параметр Disable Language Extensions / Za (Property Pages-> C / C ++ -> Language), поэтому первый цикл, в котором используется 'i', работает, а остальные дают ошибки. Либо не отключайте языковые расширения, либо объявляйте «i» в каждом цикле, в котором вы его используете (или в более высоком масштабе).

Правильное объявление i - самый переносимый метод, поскольку он не зависит от каких-либо языковых расширений. Например. у вас есть это:

for(int i=0;i<NO_OF_FUNCTIONS;i++)
...
for(i=0;i<pImage->FileHeader.NumberOfSections;i++)
...

Измените первое использование i на просто:

int i;
for(i=0;i<NO_OF_FUNCTIONS;i++)
person MuertoExcobito    schedule 06.04.2016
comment
Отключить языковые расширения / Za is NO - person Muhammad Muazzam; 06.04.2016
comment
обновил ответ - но рекомендация остается практически такой же. - person MuertoExcobito; 07.04.2016
comment
Вам следует посмотреть на параметр C ++ / Language / Force Conformance в For Loop Scope. - person Yves Daoust; 07.04.2016

Выберите проект в обозревателе решений, щелкните правой кнопкой мыши - Свойства. C / C ++> Препроцессор.

Повторите этот шаг для всех конфигураций / всех платформ, изменив конфигурацию (Отладка / Выпуск) / платформу (x86 / x64) из верхних выпадающих списков и сохранив конфигурацию для каждой конфигурации / платформы.

Отредактируйте определения препроцессора. Добавьте следующее определение _CRT_SECURE_NO_WARNINGS - это отключит предупреждение о совместимости функции.

person TarmoPikaro    schedule 28.03.2016
comment
Я добавил это в конце, но безуспешно - person Muhammad Muazzam; 28.03.2016
comment
Я тестировал это на себе на конфигурации vs2015 / Debug / Win32 - по крайней мере, в моем случае работает. Может быть, ваша активная выбранная конфигурация не соответствует настройкам проекта, которые вы изменяете? - person TarmoPikaro; 28.03.2016
comment
Можете ли вы прислать мне весь проект - например, по скайпу (tarmo_pikaro)? - person TarmoPikaro; 02.04.2016
comment
Нет, я могу поделиться через командную программу просмотра - person Muhammad Muazzam; 03.04.2016
comment
можешь дать свой идентификатор - если я тебе позвоню? - person TarmoPikaro; 04.04.2016

Единственные сообщения, которые вы показываете, - это безобидные предупреждения. Вопреки одному из ваших комментариев, они исчезают, когда вы определяете _CRT_SECURE_NO_WARNINGS. В противном случае вы неправильно определили символ или не для нужных файлов.

Я вижу упоминание об ошибке 'i': undeclared identifier в другом посте, но не в вашем аннотации. Если последнее возникает, это действительно изменение в правилах определения переменных внутри цикла, которые управляются с помощью параметра / Zc (C ++ / Language / Force Conformance в For Loop Scope).

person Yves Daoust    schedule 07.04.2016