错误:尽管有 #include < wx/webrequest.h,但未将“wxWebRequestEvent”声明为错误>

error: ‘wxWebRequestEvent’ has not been declared Error despite having #include <wx/webrequest.h>

提问人:Astar Wstar 提问时间:2/27/2023 最后编辑:Astar Wstar 更新时间:3/1/2023 访问量:152

问:

我在 ubuntu 操作系统上的 CodeLite IDE 中收到此错误,我不确定为什么,因为我已经完成了正确的 #include < wx/webrequest.h>

Documents/CodeliteProjects/LearnFrench/modifyVocabFrame.cpp:75:10: error: 'wxWebRequest' was not declared in this scope

我已经转到了我的 wxWidgets-3.2 示例文件夹中的 wxWebRequest 示例,并尝试使用 make in 终端编译它并收到这些错误。

webrequest.cpp:29:2: error: #error "wxUSE_WEBREQUEST must be 1 for this sample."
   29 | #error "wxUSE_WEBREQUEST must be 1 for this sample."
      |  ^~~~~
webrequest.cpp:251:28: error: ‘wxWebRequestEvent’ has not been declared

wx-config 说我可以访问 wxNet 和所有其他 wxCore/Base 库,并且似乎我的系统上有 g++ 和 build-essentials,并且似乎找不到 msw,并且头文件在正确的位置。有谁知道如何解决这个错误?

我尝试将 wxUSE_WEBREQUEST=1 导出为终端中的环境变量,但似乎没有解决 make 错误。不确定我是否需要将标志传递给 makefile 中的编译器,或者完全是其他东西。如果这是问题所在,makefile 不会设置正确的标志似乎很奇怪,所以我认为这是别的东西,不太确定是什么。

Linux Ubuntu Makefile wxwidgets codelite

评论

0赞 pm100 2/27/2023
您需要在编译命令上使用 #define 或 -D,而不是环境变量
0赞 Igor 2/27/2023
@AstarWstar,您需要使用适当的选项来打开支持。有关详细信息,请查看输出。configureWebRequestconfigure --help
0赞 Igor 2/27/2023
和/或您应该检查 config.log 的输出,了解为什么该选项不是 .ON
0赞 Astar Wstar 2/27/2023
配置似乎不是系统范围的命令。我使用了 find,并找到了大约 30 个不同的文件,称为“configure”。我尝试运行 libtools 的配置,但缺少 7 个依赖项/辅助文件。“bash-completion”的配置不运行。这些是唯一可用的“共享文件夹”配置,其余的是快照文件夹/快照程序配置。
0赞 Astar Wstar 2/27/2023
我正在查看 libtool 的 config.log,这是我能找到的唯一合理的配置,是这样吗?我在寻找什么......“wxUSE_WEBREQUEST=1”行?不要看到这样的线

答:

0赞 VZ. 2/27/2023 #1

wxUSE_XXX构建库时,预处理器符号定义为 0 或 1。在 Unix 下,当运行脚本时会发生这种情况,脚本会生成包含这些定义的文件。如果在您的情况下为 0,则表示您的库版本中根本不支持 。configurewx/setup.hwxUSE_WEBREQUESTwxWebRequest

要解决此问题,您需要使用系统包中的库,该库应该启用它,或者自己构建它并检查您在运行时创建的(不是不相关的 libtool 包),以查看是否启用了对它的支持,以及为什么没有启用。config.logconfigure

后者最可能的原因是您没有安装软件包(也可以称为)。在这种情况下,您需要安装它,然后重新运行并在支持下构建库。libcurl-devlibcurl4-devconfiguremakewxWebRequest

1赞 Astar Wstar 3/1/2023 #2

我解决了这个问题。事实证明,由于某种原因,存储库中的库默认关闭了 wxWebRequest(或者也许我在从 repos 安装 wx-3.2 库时没有 libcurl-dev?谁知道呢)。因此,我下载了 wxWidgets 源代码并使用 ./configure、make、make install 进行编译(在安装之前,我确保 wxUSE_WEBREQUEST=1 在 make 文件中),并在 IDE 中连接新创建的库,它起作用了!绝对不是我想要的答案,但至少源代码编译了并且有效。如果官方的 Ubuntu 存储库库开箱即用,那就更好了,但 wxWidgets 似乎不像它们。

评论

0赞 Igor 3/1/2023
您可能没有注意缺少 cURL 警告。但我很高兴它成功了。