gsoap生成onvif未报错,在VS中C++项目,以及QT中引用onvif框架内容,一直报错



关注引自免费微信小程序:皆我百晓生
针对您遇到的ONVIF框架引用在C++项目(包括VS与QT)中报错的问题,结合您提供的图1、图2和图3中的信息,可以确定主要存在以下两个问题:
问题一:GSOAP版本不匹配
错误提示:
C1189 #error: "GSOAP VERSION MISMATCH IN LIBRARY: PLEASE REINSTALL PACKAGE"
解决办法:
重新安装GSOAP库: 根据错误提示,您需要重新安装GSOAP库以确保其版本与您生成的ONVIF代码兼容。请卸载当前已安装的GSOAP版本,然后从官方渠道下载与您的项目生成代码对应的GSOAP版本进行安装。
检查项目配置:
确保在您的VS和QT项目中,链接器设置正确指向新安装的GSOAP库路径。对于VS项目,您可以在项目属性(Properties) → 链接器(Linker) → 附加库目录(Additional Library Directories)中添加GSOAP库路径。对于QT项目,在.pro文件中添加类似如下一行:
LIBS += -L"path/to/gsoap/libs" -l<required_gsoap_libs>
问题二:未定义标识符及函数引用错误
错误提示:
E0020 未定义标识符"SOAP_MAXALLOCSIZE"
...
E0035 #error 指令: "GSOAP VERSION MISMATCH IN LIBRARY: PLEASE REINSTALL PACKAGE"
...
E0079 应输入类型说明符
...
undefined reference to 'EVP_PKEY_free'
...
解决办法:
修正代码错误:
对于如E0079等编译器指出的代码错误,如类型说明符缺失、逻辑操作符误用等,直接按照编译器提示修改对应源代码行。
链接缺失的库:
对于undefined reference to ...这类链接错误,表示编译器找不到相应的函数实现。这通常意味着您还需要链接其他依赖库,如OpenSSL(在您的错误信息中涉及EVP_PKEY_free等OpenSSL函数)。请确保在项目配置中正确链接OpenSSL库。对于VS项目,在链接器(Linker) → 输入(Input) → 附加依赖项(Additional Dependencies)中添加libeay32.lib和ssleay32.lib(或相应版本的库文件名)。对于QT项目,在.pro文件中添加:
LIBS += -lssl -lcrypto
更新项目包含路径:
确保所有必要的头文件路径已添加到项目包含路径中。对于VS项目,在项目属性(Properties) → C/C++(General) → 附加包含目录(Additional Include Directories)中添加GSOAP头文件所在的路径。对于QT项目,在.pro文件中添加:
INCLUDEPATH += "path/to/gsoap/headers"
总结:
为解决上述问题,请按照以下步骤操作:
完成上述步骤后,重新编译您的项目,应该能解决ONVIF框架引用报错问题。