raylib + cURLpp == C2733 你不能用 'extern "C" ' 重载函数

问题描述 投票:0回答:1

我尝试制作一个天气应用程序,使用 cURL 作为 api 请求,使用 raylib 作为 gui,这两个库都可以工作,直到我将它们组合起来。

我认为我的项目配置有错误,所以我创建了一个单独的项目,其中只包含 raylib 和 cURL/cURLpp ,没有任何其他代码:

#include "raylib.h"
#include "curlpp/cURLpp.hpp"


int main()
{

}

当我尝试编译时,我得到以下输出:

Build started at 6:43 PM...
1>------ Build started: Project: weatherCpp, Configuration: Debug x64 ------
1>weatherCpp.cpp
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\um\winuser.h(4710,1): error C2733: 'CloseWindow': you cannot overload a function with 'extern "C"' linkage
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\um\winuser.h(9328,1): error C2733: 'ShowCursor': you cannot overload a function with 'extern "C"' linkage
1>Done building project "weatherCpp.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
========== Build completed at 6:43 PM and took 02.010 seconds ==========

我环顾四周,我知道这是因为用 extern "C" 声明的函数,但我不知道该怎么办,是否有一种简单的方法可以解决这个问题,或者我是否需要切换库

*这两个库都是用 vcpkg 下载的
**使用与 2022 年相比

c++ curl extern raylib curlpp
1个回答
0
投票

问题在于

raylib.h
winuser.h
都包含函数
CloseWindow()
ShowCursor()
但具有不同的参数(因为它们是完全不同的不相关函数)。

raylib.h

void CloseWindow(void);    

但是:

winuser.h

BOOL CloseWindow(
  [in] HWND hWnd
);

您需要检查源文件 winuser.h 包含在何处(可能来自curl 标头?)

© www.soinside.com 2019 - 2024. All rights reserved.