Autor |
Nachricht |
Khalidjian
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.07.2014
Beiträge: 23
|
Khalidjian Mitglied
11:15:58 15.11.2016 Titel: |
[gelöst]Fehlersuche: PIP_ADAPTER_UNICAST_ADDRESS unbekannter bezeichner |
Zitieren |
Hallo,
eigentlich ist es mir fast peinlich euch damit zu belästigen, aber ich finde mein Problem nicht und weiß auch langsam nicht mehr, wie ich weiter vorgehen soll.
laut MSDN: https://msdn.microsoft.com/en-us/library/windows/desktop/aa366066(v=vs.85).aspx muss ich Winsock2 vor der IPhlpAPi einbinden. Das habe ich dann auch getan:
C++: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <sstream>
#include <iomanip>
#include <stdio.h>
#include <stdint.h>
#include <math.h>
#include <string>
#include <WinSock2.h>
#include <IPHlpApi.h>
#include <ws2ipdef.h>
#include <mstcpip.h>
#include <inaddr.h>
#include <in6addr.h>
#include <windows.h>
#include <LM.h>
#include <Psapi.h>
#include "systeminformation.h" | |
Dennoch erhalte ich in "systeminformation.h", was der Header zu meiner Klasse ist den Compiler Fehler: "C2061: Syntaxfehler: Bezeichner 'PIP_ADAPTER_UNICAST_ADDRESS'".
Was ein nicht deklarierter Bezeichner wäre. Wenn ich in die IPHlpApi.h hinein sehe, sehe ich auch, dass dort _WINSOCK2API_ nicht definiert zu sein scheint.
Haabt ihr eine Idee woran es liegt oder wie ich bei der Fehlersuche noch vorgehen kann?
Ich benutze den msvc2013 compiler im QT Creator 4.1.
Vielen Dank für eure Hilfe. |
Zuletzt bearbeitet von Khalidjian am 11:17:46 22.11.2016, insgesamt 2-mal bearbeitet |
|
 |
unskilled
Mitglied
Benutzerprofil
Anmeldungsdatum: 06.07.2007
Beiträge: 3926
|
unskilled Mitglied
14:08:14 15.11.2016 Titel: |
|
Zitieren |
Ich hatte mal ähnliche Probleme und habe am Ende die windows.h nicht eingebunden, weil die über (iirc) winsock included wird. bei mir sieht das konkret so aus:
C++: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | /*windows.hpp*/
#pragma once
#pragma warning( push )
#pragma warning( disable: 4091 )
#define NOMINMAX
#define UMDF_USING_NTSTATUS
#include <winsock2.h>
//hier iphlpapi.h
#include <winnt.h>
#include <ws2tcpip.h>
#include <winternl.h>
#include <Psapi.h>
#include <process.h>
#include <ntstatus.h>
#pragma warning( pop ) | |
in jeder datei, in der ich meine, iwas von windows zu brauchen, schreib ich dann #include "windows.hpp" |
_________________ Keiner kann besser nix als ich - Tagedieb mit Lächeln im Gesicht
|
|
 |
Khalidjian
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.07.2014
Beiträge: 23
|
Khalidjian Mitglied
15:53:41 15.11.2016 Titel: |
|
Zitieren |
Danke dir, dafür, das hat leider nicht geholfen auch wenn du recht hast und die windows.h überflüssig geworden ist. |
|
|
 |
Mr C
Unregistrierter
|
Mr C Unregistrierter
22:40:39 15.11.2016 Titel: |
|
Zitieren |
|
 |
unskilled
Mitglied
Benutzerprofil
Anmeldungsdatum: 06.07.2007
Beiträge: 3926
|
unskilled Mitglied
02:23:01 16.11.2016 Titel: |
|
Zitieren |
C++: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | //#include <iphlpapi.h> - nur so kommt fehler
#include <winsock.h> //stört nich
#include <windows.h> //stört nich
#include <winsock2.h>
#include <iphlpapi.h>
#include <winnt.h>
#include <ws2tcpip.h>
#include <winternl.h>
#include <Psapi.h>
#include <process.h>
#include <ntstatus.h>
int main()
{
PIP_ADAPTER_UNICAST_ADDRESS asd;
} | |
ansonsten kann ich deinen fehler nicht nachvollziehen... |
_________________ Keiner kann besser nix als ich - Tagedieb mit Lächeln im Gesicht
|
|
 |
Cooper Hawks
Unregistrierter
|
Cooper Hawks Unregistrierter
07:48:24 18.11.2016 Titel: |
|
Zitieren |
Bei mir trat mal ein ähnlicher Fehler auf. Durch ändern der include Reihenfolge hatte ich das Problem dann gelöst bekomen. |
|
|
 |
Khalidjian
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.07.2014
Beiträge: 23
|
Khalidjian Mitglied
14:57:31 18.11.2016 Titel: |
|
Zitieren |
Also zum einen fehlen bei Unskilled ein paar Header die ich leider zusätzlich benötige, zum anderen ist noch folgender Umstand interessant:
In der *.cpp der Klasse scheint die Struktur bekannt zu sein, da das Syntaxhighlighting vernünftig Funktioniert und ich auch von der Struktur zur Definition springen kann. Es funktioniert nicht im Headerfile der Klasse, das aber als letzter Header included wird.
Natürlich könnte ich die Klasse jetzt auch komplett in einer Datei beschreiben, das ist mir aber an der Stelle etwas zu "dreckig".
Ich werde mal weiter schauen, ob ich etwas mit Includereihenfolge bewirken kann und auch im Rest des Codes mal etwas aufräumen was die Header angeht.
Danke euch |
|
|
 |
Khalidjian
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.07.2014
Beiträge: 23
|
Khalidjian Mitglied
11:20:12 22.11.2016 Titel: |
|
Zitieren |
Hi,
also ich habe mein Problem gelöst bekommen. Ihr hattet an sich recht, das sinnvollste wäre, die Windows Funktionen mit beachteter Include Reihenfolge in einen eigenen Header auszulagern und den einzubinden.
Ich habe in meinem Fall das Problem gehabt, dass ich an einigen Stellen eine Windows.h vor der WinSock2.h inkludiert hatte, was dann zu einer ganzen Reihe von Problemen führte.
Danke euch für die Unterstützung! |
|
|
 |