【发布时间】:2018-12-13 08:19:51
【问题描述】:
我在 Windows 10 上使用 Qt Creator 4.6.1
基于 Qt 5.10.1 (MSVC 2015, 32 bit)
基于 May 2 2018 04:24:33qmake 和 mingw491_32
网上有一个项目使用botanwrapper 和包含Botan.pri
完整的代码很长,因此无法在此处发布,但可以在http://www.voidrealms.com/index.php?r=source/view&id=1 以 zip 文件的形式获得。
一切正常并加密文件,但是当我将文件带入我的项目时,我会遇到大量编译错误,如下所示。
botan.h:9380: error: expected identifier before '(' token
X942_DH_PARAMETERS = ANSI_X9_42,
^
和error: expected '}' before '(' token which points to the line
enum Format {
ANSI_X9_42,
ANSI_X9_57,
PKCS_3,
DSA_PARAMETERS = ANSI_X9_57,
DH_PARAMETERS = ANSI_X9_42,
X942_DH_PARAMETERS = ANSI_X9_42, // Error points to here
PKCS3_DH_PARAMETERS = PKCS_3
};
还有很多与const相关的错误,例如
error: non-member function 'bool Botan::verify_group(Botan::RandomNumberGenerator&, bool)' cannot have cv-qualifier
bool verify_group(RandomNumberGenerator& rng, bool strong) const;
指向下面的代码
bool verify_group(RandomNumberGenerator& rng, bool strong) const;
我已经检查了 .pro 文件的包含内容,并且我的文件设置与在相同设置上编译和运行的项目相同。我有相同的botan.pri 文件,其中包含
win32 {
DEFINES += BOTAN_TARGET_OS_IS_WINDOWS \
BOTAN_TARGET_OS_HAS_LOADLIBRARY BOTAN_TARGET_OS_HAS_WIN32_GET_SYSTEMTIME \
BOTAN_TARGET_OS_HAS_WIN32_VIRTUAL_LOCK BOTAN_HAS_DYNAMICALLY_LOADED_ENGINE \
BOTAN_HAS_DYNAMIC_LOADER BOTAN_HAS_ENTROPY_SRC_CAPI BOTAN_HAS_ENTROPY_SRC_WIN32 \
BOTAN_HAS_MUTEX_WIN32
win32-msvc* {
QMAKE_CXXFLAGS += -wd4251 -wd4290 -wd4250
DEFINES += BOTAN_BUILD_COMPILER_IS_MSVC BOTAN_TARGET_OS_HAS_GMTIME_S
} else {
QMAKE_CFLAGS += -fpermissive -finline-functions -Wno-long-long
QMAKE_CXXFLAGS += -fpermissive -finline-functions -Wno-long-long
}
LIBS += -ladvapi32 -luser32
}
我读过删除 const 将删除 1 个或多个错误,但我不明白为什么在愉快地编译 botan.h 并运行构建和加密文件的同一设置中这会被破坏。有人可以帮助如何开始解决这个问题。帮助表示赞赏。提前致谢。
【问题讨论】:
标签: c++ qt encryption botan