在wxWidgets项目中包含wxAutoExcel时出错

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

我尝试使用 wxAutoExcel 库在我的 wxWidgets 应用程序中读取/写入 excel 文件,我从链接中的源代码构建了该库https://github.com/PBfordev/wxAutoExcel,当在我的应用程序中包含标题且不包含标题时调用任何函数时,我尝试编译,但出现了几个错误 E0018、C2146、C3646、C2059、C2238,所有这些错误都与 wxAutoExcelApplication.h 文件中的第 1174 行相关。 我尝试按照https://pbfordev.github.io/wxAutoExcel/中给出的说明多次并使用不同的设置重建wxWidgets和wxAutoExcel,但没有成功,需要注意的是,库的示例是构建的正常并且他们正在工作。以下是 VS2022 中错误盘的快照: enter image description here enter image description here enter image description here 如果需要任何澄清,请评论

我尝试在所有可能的配置(静态、动态、x64、win32)中重建库和 wxWidgets。 当我单独使用这些示例(单独的项目)时,它可以工作。 我认为可能存在 vs2022 设置问题,我重置了 vs2022 设置并创建了新项目,当包含 wxAutoExcel.h 时出现错误。

以纯文本形式添加代码和错误消息:

#include <wx/msw/ole/oleutils.h>
#include <wx/wxAutoExcel.h>

using namespace wxAutoExcel;

错误:

Error   C2146   syntax error: missing ')' before identifier 'GetHWND'   myProject   C:\wxAutoExcel\include\wx\wxAutoExcelApplication.h  1174

Error   C3646   'GetHWND': unknown override specifier   myProject   C:\wxAutoExcel\include\wx\wxAutoExcelApplication.h  1174        
        
Error   C2059   syntax error: ')'   myProject   C:\wxAutoExcel\include\wx\wxAutoExcelApplication.h  1174        

Error   C2238   unexpected token(s) preceding ';'   myProject   C:\wxAutoExcel\include\wx\wxAutoExcelApplication.h  1174        
c++ excel wxwidgets ole
1个回答
0
投票

GetHwnd()
是在
include/wx/msw/private.h
中定义的宏。正如该标头的名称所示,它是私有的,即不应包含在 wxWidgets 本身之外,但不知何故它确实包含在您的案例中。如果您知道它发生在哪里,请更改代码以不包含它。如果不这样做,您可以将
#undef GetHwnd
粘贴在有问题的行之前的某个位置,但这只是一种解决方法,并且由于不恰当地包含此标头,您可能会遇到其他问题。

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