0

我想在我的 C++ 应用程序中使用 GPGME 生成和加密密钥。但是,在尝试开始时,我遇到了一个问题:

我为我的 debian 系统下载了开发包。我告诉我的编译器如何找到库。只是为了看看我是否能够初始化库(这里提到)我尝试执行以下代码..:

//--- 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 creator 用红色下划线。消息是

预期令牌';' 得到“结构”

但为什么?


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