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
ます。