Я не понимаю почему выскакивают эти ошибки помогите пожалуйста
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();
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Вам нужен конструктор для класса pop, который принимает один параметр типа intВы в вашем return пытаетесь использовать именно его, но создать его...
Мне нужно использовать эту библиотекуК моему проекту уже подключен OpenGL и все работает
Доброго времени суток, делаю интерактивную карту, подскажите пожалуйста как увеличивать ее при скроле, нарезаю svg
Я делаю свой плагин с виджетом, в котором должна загружаться картинкаВот часть кода для кнопки загрузки в самом виджете: