提问人:Astar Wstar 提问时间:2/27/2023 最后编辑:Astar Wstar 更新时间:3/1/2023 访问量:152
错误:尽管有 #include < wx/webrequest.h,但未将“wxWebRequestEvent”声明为错误>
error: ‘wxWebRequestEvent’ has not been declared Error despite having #include <wx/webrequest.h>
问:
我在 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 不会设置正确的标志似乎很奇怪,所以我认为这是别的东西,不太确定是什么。
答:
wxUSE_XXX
构建库时,预处理器符号定义为 0 或 1。在 Unix 下,当运行脚本时会发生这种情况,脚本会生成包含这些定义的文件。如果在您的情况下为 0,则表示您的库版本中根本不支持 。configure
wx/setup.h
wxUSE_WEBREQUEST
wxWebRequest
要解决此问题,您需要使用系统包中的库,该库应该启用它,或者自己构建它并检查您在运行时创建的(不是不相关的 libtool 包),以查看是否启用了对它的支持,以及为什么没有启用。config.log
configure
后者最可能的原因是您没有安装软件包(也可以称为)。在这种情况下,您需要安装它,然后重新运行并在支持下构建库。libcurl-dev
libcurl4-dev
configure
make
wxWebRequest
我解决了这个问题。事实证明,由于某种原因,存储库中的库默认关闭了 wxWebRequest(或者也许我在从 repos 安装 wx-3.2 库时没有 libcurl-dev?谁知道呢)。因此,我下载了 wxWidgets 源代码并使用 ./configure、make、make install 进行编译(在安装之前,我确保 wxUSE_WEBREQUEST=1 在 make 文件中),并在 IDE 中连接新创建的库,它起作用了!绝对不是我想要的答案,但至少源代码编译了并且有效。如果官方的 Ubuntu 存储库库开箱即用,那就更好了,但 wxWidgets 似乎不像它们。
评论
configure
WebRequest
configure --help
ON