首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型重定义错误(使用报头警卫)

类型重定义错误(使用报头警卫)
EN

Stack Overflow用户
提问于 2017-10-08 18:58:05
回答 1查看 669关注 0票数 0

免责声明:C++ Redefinition Header Files (winsock2.h)没有解决我的问题

在这个项目中,我试图拍摄一个截图,然后用libjpeg-turbo压缩它。问题是我会犯类似的错误

代码语言:javascript
复制
"sockaddr": "struct" Type redefinition

代码语言:javascript
复制
"nothl": Redefinition

工作人员:

代码语言:javascript
复制
#pragma once
#ifndef SCREENWORKER_H
#define SCREENWORKER_H

#include <string>
#include <vector>
#include <thread>

#include <turbojpeg.h>

#include <Windows.h>

#include "..\API\NetClient.h"


class ScreenWorker {
private:
    NetClient* client;
public:
    int delay = 30;
    ScreenWorker(NetClient* client);
    HBITMAP GetScreenBmp(HDC hdc);
    void Update();
};
#endif

ScreenWorker.cpp:

代码语言:javascript
复制
#include "ScreenWorker.h"

ScreenWorker::ScreenWorker(NetClient* client) {
    this->client = client;
    Update();
}

HBITMAP ScreenWorker::GetScreenBmp(HDC hdc) {...}

void ScreenWorker::Update() {...}

main.cpp (DLL-条目):

代码语言:javascript
复制
#pragma once
#include "..\..\Base\API\API\GladOSClient.h"
#include "ScreenWorker.h"

using namespace std;

BOOL WINAPI DllMain(HINSTANCE Instance, DWORD Reason, LPVOID Reserved) {
    return true;
}

H(只有标题部分):

代码语言:javascript
复制
#pragma once
#ifndef NETCLIENT_H
#define NETCLIENT_H

#define _WINSOCKAPI_
#include <Windows.h>
#include <winsock2.h>
#include <ws2tcpip.h>
#include <vector>
#include <list>
#include <mutex>
#include <map>
#include <string>

#pragma comment (lib, "Ws2_32.lib")
#pragma comment (lib, "Mswsock.lib")
#pragma comment (lib, "AdvApi32.lib")

#include "Utils.h"
#include "PacketHandler.h"
#include "Packet.h"

...

#endif

正如您所看到的,我在任何地方都使用头部保护,但是我还是会遇到这些错误。似乎包含"Windows.h“有问题吗?

提前感谢!

编辑我猜这个问题与libjpegturbo处理包含"Windows.h“的方式有关。目前我没有解决这个问题的真正方法。也许我试着导出我在独立DLL中需要的函数.希望这能解决这个问题。

EN

回答 1

Stack Overflow用户

发布于 2017-10-08 19:02:13

经典的问题。

只需从NetClient.h中删除这一行

代码语言:javascript
复制
#include <Windows.h>

包含<Winsock2.h>将为您引入<windows.h>,并纠正所有这些重新定义的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46634912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档