redefinition; different basic types [требует правки]

377
04 ноября 2017, 14:52

Я не понимаю почему выскакивают эти ошибки помогите пожалуйста

C2371 'IP_OPTION_INFORMATION': redefinition; different basic types
C2371 'ICMP_ECHO_REPLY': redefinition; different basic types
C2371 'IP_OPTION_INFORMATION': redefinition; different basic types
C2371 'ICMP_ECHO_REPLY': redefinition; different basic types

#pragma once
#pragma warning(disable:4996)
#include "afxwin.h"
typedef struct tagIP_OPTION_INFORMATION
{
    unsigned char      Ttl;
    unsigned char      Tos;
    unsigned char      Flags;
    unsigned char      OptionsSize;
    unsigned char FAR *OptionsData;
} IP_OPTION_INFORMATION;
typedef struct tagICMP_ECHO_REPLY
{
    unsigned long         Address;
    unsigned long         Status;
    unsigned long         RoundTripTime;
    unsigned short        DataSize;
    unsigned short        Reserved;
    void FAR              *Data;
    IP_OPTION_INFORMATION Options;
} ICMP_ECHO_REPLY;
typedef IP_OPTION_INFORMATION FAR* LPIP_OPTION_INFORMATION;
typedef HANDLE(WINAPI IcmpCreateFile)(VOID);
typedef IcmpCreateFile* lpIcmpCreateFile;
typedef BOOL(WINAPI IcmpCloseHandle)(HANDLE IcmpHandle);
typedef IcmpCloseHandle* lpIcmpCloseHandle;
typedef DWORD(WINAPI IcmpSendEcho)(HANDLE IcmpHandle, unsigned long DestinationAddress,
    LPVOID RequestData, WORD RequestSize,
    LPIP_OPTION_INFORMATION RequestOptions,
    LPVOID ReplyBuffer, DWORD ReplySize, DWORD Timeout);
typedef IcmpSendEcho* lpIcmpSendEcho;
// CTraceRoteDlg dialog
class CTraceRoteDlg : public CDialogEx
{
// Construction
public:
    CTraceRoteDlg(CWnd* pParent = NULL);    // standard constructor
// Dialog Data
#ifdef AFX_DESIGN_TIME
    enum { IDD = IDD_TRACEROTE_DIALOG };
#endif
    protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support

// Implementation
protected:
    HICON m_hIcon;
    HINSTANCE hIcmp;
    static lpIcmpCreateFile pIcmpCreateFile;
    static lpIcmpSendEcho pIcmpSendEcho;
    static lpIcmpCloseHandle pIcmpCloseHandle;
    // Generated message map functions
    virtual BOOL OnInitDialog();
    afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
    afx_msg void OnPaint();
    afx_msg HCURSOR OnQueryDragIcon();
    DECLARE_MESSAGE_MAP()
public:
    afx_msg void OnBnClickedButton1();
    CEdit edHostName;
    CListBox lbMessages;
};

============================================

#include "stdafx.h"
#include "TraceRote.h"
#include "TraceRoteDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif
#pragma warning(disable:4996)
lpIcmpCreateFile CTraceRoteDlg::pIcmpCreateFile;
lpIcmpSendEcho CTraceRoteDlg::pIcmpSendEcho;
lpIcmpCloseHandle CTraceRoteDlg::pIcmpCloseHandle;
void CTraceRoteDlg::OnBnClickedButton1()
{

WSADATA wsa;
    if (WSAStartup(MAKEWORD(1, 1), &wsa) != 0)
    {
        AfxMessageBox("Can't load a correct version of WinSock");
        return;
    }
hIcmp = LoadLibrary("ICMP.DLL");
if (hIcmp == NULL)
{
    AfxMessageBox("Can't load ICMP DLL");
    return;
}
pIcmpCreateFile = (lpIcmpCreateFile)GetProcAddress(hIcmp, "IcmpCreateFile");
pIcmpSendEcho = (lpIcmpSendEcho)GetProcAddress(hIcmp, "IcmpSendEcho");
pIcmpCloseHandle = (lpIcmpCloseHandle)GetProcAddress(hIcmp, "IcmpCloseHandle");
in_addr Address;
if (pIcmpCreateFile == NULL)
{
    AfxMessageBox("ICMP library error");
    return;
}
char chHostName[255];
edHostName.GetWindowText(chHostName, 255);
LPHOSTENT hp = gethostbyname(chHostName);
if (hp == NULL)
{
    AfxMessageBox("Host not found");
    return;
}
unsigned long   addr;
memcpy(&addr, hp->h_addr, hp->h_length);
BOOL bReachedHost = FALSE;
for (UCHAR i = 1; i <= 50 && !bReachedHost; i++)
{
    Address.S_un.S_addr = 0;
    int iPacketSize = 32;
    int iRTT;
    HANDLE hIP = pIcmpCreateFile();
    if (hIP == INVALID_HANDLE_VALUE)
    {
        AfxMessageBox("Could not get a valid ICMP handle");
        return;
    }
    unsigned char* pBuf = new unsigned char[iPacketSize];
    FillMemory(pBuf, iPacketSize, 80);
    int iReplySize = sizeof(ICMP_ECHO_REPLY) + iPacketSize;
    unsigned char* pReplyBuf = new unsigned char[iReplySize];
    ICMP_ECHO_REPLY* pEchoReply = (ICMP_ECHO_REPLY*)pReplyBuf;
    IP_OPTION_INFORMATION ipOptionInfo;
    ZeroMemory(&ipOptionInfo, sizeof(IP_OPTION_INFORMATION));
    ipOptionInfo.Ttl = i;
    DWORD nRecvPackets = pIcmpSendEcho(hIP, addr, pBuf, iPacketSize, &ipOptionInfo, pReplyBuf, iReplySize, 30000);
    if (nRecvPackets != 1)
    {
        AfxMessageBox("Can't ping host");
        return;
    }
    Address.S_un.S_addr = pEchoReply->Address;
    iRTT = pEchoReply->RoundTripTime;
    pIcmpCloseHandle(hIP);
    delete[] pReplyBuf;
    delete[] pBuf;
    char lpszText[255];
    hostent* phostent = NULL;
    phostent = gethostbyaddr((char *)&Address.S_un.S_addr, 4, PF_INET);
    if (phostent)
        sprintf(lpszText, "%d: %d ms [%s] (%d.%d.%d.%d)",
            i, iRTT,
            phostent->h_name, Address.S_un.S_un_b.s_b1, Address.S_un.S_un_b.s_b2,
            Address.S_un.S_un_b.s_b3, Address.S_un.S_un_b.s_b4);
    else
        sprintf(lpszText, "%d - %d ms (%d.%d.%d.%d)",
            i, iRTT,
            Address.S_un.S_un_b.s_b1, Address.S_un.S_un_b.s_b2, Address.S_un.S_un_b.s_b3,
            Address.S_un.S_un_b.s_b4);
    lbMessages.AddString(lpszText);
    if (addr == Address.S_un.S_addr)
        bReachedHost = TRUE;
}
if (hIcmp)
{
    FreeLibrary(hIcmp);
    hIcmp = NULL;
}
WSACleanup();

}

READ ALSO
visual studio и перегрузка операторов

visual studio и перегрузка операторов

Вам нужен конструктор для класса pop, который принимает один параметр типа intВы в вашем return пытаетесь использовать именно его, но создать его...

341
Freeglut x64 и его подключение

Freeglut x64 и его подключение

Мне нужно использовать эту библиотекуК моему проекту уже подключен OpenGL и все работает

237
Zoom карты скроллом

Zoom карты скроллом

Доброго времени суток, делаю интерактивную карту, подскажите пожалуйста как увеличивать ее при скроле, нарезаю svg

221
Проблема с загрузкой картинки в свой виджет WordPress

Проблема с загрузкой картинки в свой виджет WordPress

Я делаю свой плагин с виджетом, в котором должна загружаться картинкаВот часть кода для кнопки загрузки в самом виджете:

272