ОС: Windows 8 64-битная
Компилятор: Visual Studio 2012
Описание проблемы: Когда я пытаюсь скомпилировать коды с «dirent.h» в «x64», происходит ошибка. Независимо от того, используется dirent.h или нет. Ошибка не возникнет, если коды были скомпилированы с настройкой «win32».
Ошибка MSG: 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;
}
У меня была такая же проблема … Попробуйте перейти PROJECT-> PROPERTIES -> Configuration Properties -> C / C ++ -> Preprocessor, а в Preprecessor Definitions добавить AMD64. Меня устраивает. PS ставлю подчеркивание до и после AMD64.
Других решений пока нет …