Я пытаюсь скомпилировать код с Структура MIB_IPINTERFACE_ROW. Давайте включим следующий класс в мой рабочий код:
class IpInterfaceRow {
private:
MIB_IPINTERFACE_ROW mib_ipinterface_row;
};
При использовании Visual Studio 2015 я сталкиваюсь со следующими ошибками:
unknown override specifier
(C3646) и
missing type specifier - int assumed. Note: C++ does not support default-int
(C4430)
Что вы можете проверить здесь — C3646 а также здесь — C4430. На самом деле второй — больше предупреждение, что я мог бы выключить с #pragma warning
, и я думаю, что это зависит от первого (так как компилятор не распознает MIB_IPINTERFACE_ROW
, он пытается придать ему значение int
отсюда и вторая ошибка) тогда я сосредоточусь на первой.
Я думаю, что это может быть проблема заголовков, которые я включаю / не включаю в неправильном порядке? Я перепробовал много вариантов:
#include <netioapi.h>
, #include <iphlapi.h>
и многое другое…
Например, из Вот, Я пытался использовать
#include <ws2def.h>
#include <ws2ipdef.h>
#include <iphlpapi.h>
но тот же результат … у меня та же проблема, если я пытаюсь использовать MIB_INTERFACE_TABLE. Я также попытался скомпилировать пример кода в GetIpInterfaceTable (), который имеет это включает в себя
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
#include <winsock2.h>
#include <ws2ipdef.h>
#include <iphlpapi.h>
#include <stdio.h>
#include <stdlib.h>
#pragma comment(lib, "iphlpapi.lib")
но опять тот же результат …
У кого-то есть представление о том, что может быть не так? Что может означать ошибка C3646 в моем случае?
Следующее включает действительно работу
#include <winsock2.h>
#include <windows.h>
#include <ws2ipdef.h>
#include <iphlpapi.h>
#include <stdio.h>
#include <stdlib.h>
#pragma comment(lib, "iphlpapi.lib")
В моем коде было два файла, включенных до этого, что дало мне проблему:
Первый включал iphlpapi.h (затем включенный перед ws2ipdef.h)
Второй включает netcfgx.h, который включает в себя windows.h (затем включается до winsock2.h)
В частности, обратите внимание, что другие заголовки, т.е. в моем случае netcfgx.h
может включать в себя некоторые заголовки, т.е. windows.h
и сделать заказ неправильно
Других решений пока нет …