我已经在Kubuntu 18.04上使用CMake 3.17.1和Conan 1.25.0安装了2.2.1版本的libologicaccess库。 我尝试遵循libologicaccess库的C ++指南,并在第二行代码中,在运行程序时出现以下错误:
terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_M_construct null not valid
./run.sh: line 9: 6781 Aborted (core dumped) bin/./github_console
main.cpp
// my first program in C++
#include <iostream>
#include <logicalaccess/dynlibrary/librarymanager.hpp>
#include <logicalaccess/readerproviders/readerconfiguration.hpp>
#include <logicalaccess/cards/chip.hpp>
int main()
{
std::cout << "Hello World!\n";
// Reader configuration object to store reader provider and reader unit selection.
std::shared_ptr<logicalaccess::ReaderConfiguration> readerConfig(new logicalaccess::ReaderConfiguration());
// Set PCSC ReaderProvider by calling the Library Manager which will load the function from the corresponding plug-in
readerConfig->setReaderProvider(logicalaccess::LibraryManager::getInstance()->getReaderProvider("PCSC"));
}
以std :: shared_ptr ..开头的第一行代码运行正常,因此这可能是库中的错误代码,也可能是版本/兼容性错误。第二行调用getReaderProvider会导致错误。我不知道在哪里可以找到此错误的解决方法。最初来自this problem。那是固定的,但仍然停留在相同的代码上。我进行了一些随机的故障排除,但是没有运气。有什么建议吗?
编辑: 我的CmakeLists.txt是: 项目(测试)
cmake_minimum_required(VERSION 3.16)
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup(TARGETS)
set(CMAKE_CXX_FLAGS "-I /usr/include/PCSC")
add_executable(test main.cpp)
target_link_libraries(test PUBLIC CONAN_PKG::LogicalAccess)
conanfile.txt:
[requires]
LogicalAccess/2.2.1
[generators]
cmake
[imports]
lib, * -> lib
要构建,我只需在project_folder / build中运行cmake --build .
。