0

C++ アプリケーションで鍵の生成と暗号化に GPGME を使用したいと考えています。ただし、開始しようとしているときに、次の問題に行き詰まりました。

Debian システムの dev パッケージをダウンロードしました。ライブラリを見つける方法をコンパイラに伝えました。ライブラリを初期化できるかどうかを確認するためだけに (ここで説明)、次のコードを実行してみます..:

//--- Main.cpp---

#include <locale.h>
#include <gpgme.h> 

int main(){
       /* Initialize the locale environment.  */
  setlocale (LC_ALL, "");
  gpgme_check_version (NULL);
  gpgme_set_locale (NULL, LC_CTYPE, setlocale (LC_CTYPE, NULL));
#ifdef LC_MESSAGES
  gpgme_set_locale (NULL, LC_MESSAGES, setlocale (LC_MESSAGES, NULL));
#endif
    return 0;
}

この線

gpgme_set_locale (NULL, LC_CTYPE, setlocale (LC_CTYPE, NULL));

qt 作成者によって赤で下線が引かれています。メッセージは

予想されるトークン ';' 「構造体」を取得しました

しかし、なぜ?


JFYI

以前の問題の概要として、私の CMakeLists は次のようになります。

プロジェクトのルート ディレクトリにあるメインの CMakeLists.txt:

//...
include(FeatureSummary)

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
find_package(Gpgme)

# Additional include directories
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}                  
                    ${GPGME_INCLUDES}
)

ADD_SUBDIRECTORY(${CMAKE_SOURCE_DIR}/application/framework/impl)

application/framework/impl サブディレクトリの CMakeLists.txt:

# Define name of component
SET(COMPONENT_NAME framework)

# Define set of source files for library
SET(comp_src
      //... well, the sources
)

add_executable(${COMPONENT_NAME} ${comp_src})
target_link_libraries(${COMPONENT_NAME} ${GPGME_VANILLA_LIBRARIES})

アップデート

行の推奨を外した場合

//gpgme_check_version (NULL);

メッセージが消えます。ドキュメントを確認しました。メソッドの署名は有効であると継ぎ目があります。使用しているライブラリのバージョンに問題がある可能性がありますか?


編集:

これはコンパイラ エラーではなく、qt 作成者によって付けられた単なる赤いマークです。タイプミスか何かが原因だと思います。しかし、タイプミスは見当たりません。さらに、行をコメントアウトしなくても、アプリケーションはコンパイルおよび実行されcheck_versionます。

4

0 に答える 0