Visual studio ошибка c2371

  • Remove From My Forums
  • Question

  • When I am recompiling a C++ project with Visual Studio 2017, which used to work well in Visual Studio 2015, the following error shows up.

    1>c:program files (x86)microsoft visual studio2017communityvctoolsmsvc14.15.26726includestdint.h(17): error C2371: ‘CHAR’: redefinition; different basic types
    1>c:program files (x86)windows kits10include10.0.17134.0umwinnt.h(431): note: see declaration of ‘CHAR’
    1>c:program files (x86)microsoft visual studio2017communityvctoolsmsvc14.15.26726includestdint.h(23): error C2371: ‘DWORD’: redefinition; different basic types
    1>c:program files (x86)windows kits10include10.0.17134.0sharedminwindef.h(156): note: see declaration of ‘DWORD’

    Some troubleshoot I’ve done before stuck by the above errors are (1) I try to compile this project with Visual Studio 2015, it shows Visual Studio error D8016: ‘/ZI’ and ‘/Gy’ command-line options are incompatible. I solve this by turn off /Gy. (2)
    I try to use Visual Studio 2015 to compile this project, the above error remains; (3) I try to add $(UniversalCRT_IncludePath) in the additional include directories of the project setting, these error remains; (4) I try to use SDK windows 8.1 instead
    of window 10.0, other errors show up like «stdio.h» cannot find.

    Thanks for your help or any suggestion and <g class=»gr_ gr_1424 gr-alert gr_gramm gr_inline_cards gr_run_anim Grammar only-ins doubleReplace replaceWithoutSep» data-gr-id=»1424″ id=»1424″>happy</g> new year of 2019

i have a Problem. I use Visual Studio 2013 and get the following Error:

Error C2371: 'getgrundflaeche' redefinition: different basic types.

I don’t know why i get this Error. I get the same Error with VS12, when i try to call the function getgrundflaeche().

Here is the Code:

#include <stdio.h>
#define PI 3.14159265359

int main(void){
    double h = 0, d = 0, r = 0, G = 0, V = 0, M = 0, O = 0;

    printf("Geometrie Zylinder:nBitte geben sie den Durchmesser d ein (cm): ");
    scanf_s("%lf", &d);
    printf("Bitte geben sie die Höhe h ein (cm): ");
    scanf_s("%lf", &h);
    r = d / 2;

    G = getgrundflaeche(r);
    /*V = get_volumen(r, h);
    M = get_mantelflaeche(d, h);
    O = get_oberflaeche(M, G); */

    system("CLS");

    printf("Eingaben:nDurchmesser d: %lf cmnHöhe h: %lf cm", d, h);
    system("PAUSE");

    return 0;
}

double getgrundflaeche(double r){
    return (r*r);
}
/*
double get_volumen(double r, double h){
return r*r*h*PI;
}

double get_mantelflaeche(double d, double h){
return d*h*PI;
}

double get_oberflaeche(double M, double G){
return M+2*G;
}*/

I am beginner in using pthread header. I tried a sample of code in tutorial but it gave an error refer to TimLib.h library. I didn’t include this header but it seems this header called in pthread.h. I will appreciate if you can guide me.

#include <pthread.h>
#include <stdio.h>
#include <cstdlib>
#define NUM_THREADS     5

void* PrintHello(void* threadid)
{
    long tid;
    tid = (long)threadid;
    printf("Hello World! It's me, thread #%ld!n", tid);
    pthread_exit(NULL);
}

int main(int argc, char* argv[])
{
    pthread_t threads[NUM_THREADS];
    int rc;
    long t;
    for (t = 0; t < NUM_THREADS; t++) {
        printf("In main: creating thread %ldn", t);
        rc = pthread_create(&threads[t], NULL, PrintHello, (void*)t);
        if (rc) {
            printf("ERROR; return code from pthread_create() is %dn", rc);
            exit(-1);
        }
    }

    /* Last thing that main() should do */
    pthread_exit(NULL);
}

Severity Code Description Project File Line Suppression State
Error C2371 ‘time_t’: redefinition; different basic types Project2 C:Program Files (x86)Microsoft Visual Studio2019EnterpriseVCToolsMSVC14.21.27702includeTimeLib.h 21

fryn3

3 / 3 / 1

Регистрация: 03.07.2013

Сообщений: 59

1

01.10.2015, 16:50. Показов 7194. Ответов 8

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Разбираюсь в чужем проекте. Проект работал в Qt и возможно на Linux. Хочу запустить его в VS2015. От всех ошибок кроме одной смог избавиться. А это что то выше моего понимания.
В проекте написано

C++
1
2
3
4
5
6
7
8
#if 1 // FIXME нужно определить при сборке под Windows
typedef short                int16_t;
typedef unsigned short     u_int16_t;
typedef long                 int32_t;
typedef unsigned long      u_int32_t;
typedef long long            int64_t;
typedef unsigned long long u_int64_t;
#endif

Компилятор жалуется и выводит ошибку: Ошибка C2371 int32_t: переопределение; различные базовые типы MODEL_VS2015 c:program filesmicrosoft visual studio 14.0vcincludestdint.h
При нажатии открывает стандартную библиотеку stdint.h и выделяет эту строчку:»typedef int int32_t;»

В чем может быть ошибка и как ее решить?

Миниатюры

Ошибка C2371 int32_t: переопределение, различные базовые типы
 



0



267 / 170 / 40

Регистрация: 25.08.2014

Сообщений: 1,087

Записей в блоге: 1

01.10.2015, 17:37

2

Закомменти все строки с дублированием типов. Разумеется в этом блоке, а не в stdint.h.



1



3 / 3 / 1

Регистрация: 03.07.2013

Сообщений: 59

02.10.2015, 10:47

 [ТС]

3

Цитата
Сообщение от Enno
Посмотреть сообщение

Закомменти все строки с дублированием типов. Разумеется в этом блоке, а не в stdint.h.

Пробовал. Появляются две ошибки ( см рис)

Миниатюры

Ошибка C2371 int32_t: переопределение, различные базовые типы
 



0



Модератор

Эксперт С++

13252 / 10392 / 6213

Регистрация: 18.12.2011

Сообщений: 27,798

02.10.2015, 10:53

4

Лучший ответ Сообщение было отмечено fryn3 как решение

Решение

Так это уж Вы забыли подключить файл с БПФ к проекту.



1



3 / 3 / 1

Регистрация: 03.07.2013

Сообщений: 59

02.10.2015, 11:13

 [ТС]

5

Нет, к сожалению не забыл. Все что можно включено. БПФ тоже.
Пробовал отдельно подключать библиотеку stdint.h не помогает. Ошибки остаются.



0



Модератор

Эксперт С++

13252 / 10392 / 6213

Регистрация: 18.12.2011

Сообщений: 27,798

02.10.2015, 11:15

6

Лучший ответ Сообщение было отмечено fryn3 как решение

Решение

Если БПФ у Вас в виде исходника, то его нужно не просто положить в папку, а подключить к проекту аналогично файлу с main()



1



3 / 3 / 1

Регистрация: 03.07.2013

Сообщений: 59

02.10.2015, 11:35

 [ТС]

7

Он реализован в библиотеке и она подключена к проекту и ф-ции ее видны
Я сейчас по всем библиотекам прошелся и подключил fft.h . ошибка не исчезла(



0



Модератор

Эксперт С++

13252 / 10392 / 6213

Регистрация: 18.12.2011

Сообщений: 27,798

02.10.2015, 12:08

8

В настройках проекта «Проект->Свойства->Компоновка->Зависимости» добавили fft.lib?



0



3 / 3 / 1

Регистрация: 03.07.2013

Сообщений: 59

02.10.2015, 12:18

 [ТС]

9

Спасибо за помощь. Оказывается в fft.cpp отсутствовал fft_make(). ZSS — лучший=)



0



Я получаю эту ошибку «Ошибка C2371« DWORD »: переопределение; различные основные типы» при компиляции кода Visual C ++ в Visual Studio 2015 с использованием MFC.
Когда я дважды щелкаю по ошибке, я перехожу на stdint.h, строка 23:

typedef unsigned int       uint32_t;

И если я нахожу какой-либо DWORD в своем коде и нажимаю на нем клавишу f12, он переводит меня в строку minwindef.h 156:

typedef unsigned long       DWORD;

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

-2

Решение

Я нашел ошибку, это было на 3partyapi.h:

#ifndef uint32_t
# define uint32_t DWORD
#endif

То, что я сделал, было просто включить #include <cstdint> до #ifndef и ошибка ушла.
Спасибо всем за помощь.

0

Другие решения

Других решений пока нет …

Понравилась статья? Поделить с друзьями:
  • Visual studio ошибка 0x80070643
  • Visual studio обнаружена непредвиденная ошибка при компиляции
  • Visual studio не показывает ошибку
  • Visual studio не подчеркивает ошибки 2019
  • Vipnet client ошибка 238