2

私はQt Creator 4.6.1Windows 10で使用し
て いますQt 5.10.1 (MSVC 2015, 32 bit)
May 2 2018 04:24:33
qmakemingw491_32

botanwrapperインクルードを使用するWebからのプロジェクトがあります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
}

を削除すると 1 つ以上のエラーが削除されることを読みましたが、問題なくコンパイルしてビルドを実行し、ファイルを暗号化するのとconst同じセットアップでこれが壊れている理由がわかりません。botan.h誰かがこれのトラブルシューティングを開始する方法を手伝ってくれませんか。助けていただければ幸いです。前もって感謝します。

4

1 に答える 1

1

問題は、Windows APIX942_DH_PARAMETERSがこの列挙型と競合するマクロを定義していることです。(実際、この問題を回避するために、Botan の後のリリースで列挙型の名前が変更されましたhttps://github.com/randombit/botan/issues/482 )。

#undef X942_DH_PARAMETERSBotan ヘッダーを含める前に使用することで回避できます。

于 2018-07-05T01:25:05.550 に答える