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被破坏了,所以在我修复它之后,程序运行正常