ошибка компиляции с dirent.h на 64-битных окнах

ОС: Windows 8 64-битная

Компилятор: Visual Studio 2012.

Описание проблемы: Когда я пытаюсь скомпилировать коды с "dirent.h" в "x64", возникает ошибка. Независимо от того, используется dirent.h или нет. Ошибка не возникнет, если коды были скомпилированы с настройкой «win32».

Сообщение об ошибке: C:\Program Files (x86)\Windows Kits\8.0\Include\um\winnt.h(146): фатальная ошибка C1189: #error: "Нет целевой архитектуры"

ПРИМЕР:

#include stdio.h  
#include sys/types.h
#include dirent.h   

int main(int argc, char* argv[])  
{  

    const char *name = ".";  
    DIR *dirp;  
    struct dirent *dp;  

    dirp = opendir(name);  
    if (dirp != NULL) {  
        printf("opendir %s succeed!\n", name);    
    }  
    closedir(dirp);  
    return 0;  
} 

person user2334280    schedule 13.02.2014    source источник
comment
Не имеет отношения к заданному вопросу: вам не хватает ‹› в ваших включениях.   -  person cup    schedule 15.03.2014
comment
Вы получаете ту же ошибку в программе hello world? Если да, то это не имеет отношения к dirent.h. Эквивалентом Windows является FindFirstFile, FindNext, FindClose согласно msdn.microsoft.com/en-us/library/windows/desktop/   -  person cup    schedule 15.03.2014


Ответы (1)


У меня была та же проблема... Попробуйте перейти ПРОЕКТ-> СВОЙСТВА -> Свойства конфигурации -> C/C++ -> Препроцессор и в определениях препроцессора добавить AMD64. Меня устраивает. PS поставить подчеркивание до и после AMD64.

person vuk    schedule 15.03.2014