Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ .因此,未找到构造函数的文件_C++_Cmake_Shared Libraries_Undefined Reference - Fatal编程技术网

C++ .因此,未找到构造函数的文件

C++ .因此,未找到构造函数的文件,c++,cmake,shared-libraries,undefined-reference,C++,Cmake,Shared Libraries,Undefined Reference,我在我的电脑上创建了一个。所以文件,它正在工作, 但是当我克隆代码并尝试创建时,请再次使用以下命令: cmake .. sudo make install 它创建共享对象,但当我尝试构建项目时,我得到: 空虚 __gnu_cxx::新建_分配器::构造, std::分配器>&>(库存管理器*, std::_cxx11::基本字符串, std::分配器>&'): /usr/local/include/c++/7.4.0/ext/new_分配器。h:136:未定义 提及 `InventoryMan

我在我的电脑上创建了一个
。所以
文件,它正在工作, 但是当我克隆代码并尝试创建
时,请再次使用以下命令:

cmake ..
sudo make install
它创建共享对象,但当我尝试构建项目时,我得到:

空虚 __gnu_cxx::新建_分配器::构造, std::分配器>&>(库存管理器*, std::_cxx11::基本字符串, std::分配器>&'): /usr/local/include/c++/7.4.0/ext/new_分配器。h:136:未定义 提及 `InventoryManager::InventoryManager(std:_cxx11::基本字符串,std::分配器>cons

我如何让它工作

这是我的CMakeList.txt文件

cmake_minimum_required(VERSION 3.9)
project(InventoryManager VERSION 1.0.1 DESCRIPTION "InventoryManager v 1.0.1")
set(CMAKE_CXX_STANDARD 14)

include(GNUInstallDirs)
add_library(InventoryManager SHARED
          src/InventoryItem.cpp
          src/InventoryItemFactory.cpp
          src/InventoryManager.cpp)
SET_TARGET_PROPERTIES(InventoryManager PROPERTIES
        VERSION ${PROJECT_VERSION}
        SOVERSION 1
        PUBLIC_HEADER include/InventoryItem.hpp
                    include/InventoryItemFactory.hpp
                    include/InventoryManager.hpp)
configure_file(InventoryManager.pc.in InventoryManager.pc @ONLY)
target_include_directories(InventoryManager PRIVATE .)
install(TARGETS InventoryManager
        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
        PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
install(FILES ${CMAKE_BINARY_DIR}/InventoryManager.pc
        DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig)
编辑 这是InventoryManager.cpp中的构造函数

#include <cmath>
#include <functional>
#include <include/InventoryManager.hpp>
#include <iostream>

InventoryManager::InventoryManager(const std::string &symbol):m_Symbol(symbol),m_itemFactory(*(new InventoryItemFactory(symbol)))
{
    m_InventoryQty = 0;
    m_InventoryItemValue = 0;
    m_TotalInventoryValue = 0;
    m_CurrentInventoryValue = 0;

}
#包括
#包括
#包括
#包括
InventoryManager::InventoryManager(常量std::字符串和符号):m_符号(符号),m_项目工厂(*(新的InventoryItemFactory(符号)))
{
m_InventoryQty=0;
m_InventoryItemValue=0;
m_TotalInventoryValue=0;
m_CurrentInventoryValue=0;
}
下面是.h文件中的声明

#include <string>
#include <mutex>
#include <map>
#include <memory>
#include "InventoryItem.hpp"
#include "InventoryItemFactory.hpp"

class InventoryManager
{
public:
      explicit InventoryManager(const std::string &symbol);
    /* more functions */
}
#包括
#包括
#包括
#包括
#包括“InventoryItem.hpp”
#包括“InventoryItemFactory.hpp”
类资源清册管理器
{
公众:
显式InventoryManager(常量std::字符串和符号);
/*更多功能*/
}

您可以发布
InventoryManager.cpp
和其他引用文件的代码吗?如果没有一个@squareskittles,很难提出解决方案。我解决了这个问题,但不是因为so,而是因为stdc++。所以sl被破坏了,所以在我修复它之后,程序运行正常