我想在我的C ++应用程序中使用GPGME进行密钥生成和加密。然而,在尝试开始时,我遇到了一个问题:
我为我的debian系统下载了dev包。我告诉我的编译器how to find the library。只是为了看看我是否能够初始化库(mentioned here)我尝试执行以下代码..:
//--- 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
作为我的earlier problem的synopsys,我的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)
应用程序/ 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
行,应用程序也会编译并运行。