Есть два h-файла, в которых определен тип данных:
typedef unsigned long DWORD;typedef uint32_t DWORD, LPDWORD;Первый тип данных (файл wintypes.h) нужен для функций в компилируемом файле xxx.cpp. В этот же xxx.cpp подключается Crypto.h, имеющий #include "stdafx.h", и подключается winscard.h, имеющий #include "wintypes.h".
При компиляции под Ubuntu возникает ошибка:
In file included from Crypto.h:27:0,
from xxx.cpp:12:
stdafx.h:29:26: error: conflicting declaration ‘typedef uint32_t* LPDWORD’
typedef uint32_t DWORD, *LPDWORD;
^
In file included from winscard.h:21:0,
from xxx.cpp:11:
wintypes.h:78:17: note: previous declaration as ‘typedef DWORD* LPDWORD’
typedef DWORD *LPDWORD;
Не судите строго, я еще только учусь, могу многое не знать. Объясните, пожалуйста, как это можно исправить.
Если DWORD соответствует uint32_t, то проблем быть не должно. Но раз уж они есть, получается, что это не так. Чтобы ругани компилятора на конфликтующие объявления не было нужно убрать этот конфликт. Например, добавить в одном из файлов директиву условной компиляции:
#ifdef WIN32
typedef DWORD* LPDWORD;
#else
typedef uint32_t* LPDWORD;
#endif
Реальные значения дефайнов и типов имеет смысл уточнять по ситуации. В вашей ситуации похоже, что файлы просто не адаптированы для сборки под различные платформы в составе единого модуля.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей