Je suis en train de faire une calculatrice scientifique en ligne de commande en C++ pour mon utilisation et aussi pour la pratique. J'ai un problème avec la compilation en utilisant cmake avec mingw sur Windows. Ce sont mes fichiers source:Application crash lors de l'utilisation de la bibliothèque du programme compilé avec make
main.ccp
#include <iostream>
#include <string>
#include "ExpressionCalculations/ExpressionParser.h"
int main()
{
std::string humanReadableExpression;
std::cout<<"Enter expression\n";
std::getline(std::cin, humanReadableExpression);
std::cout<<humanReadableExpression;
ExpressionCalculations::ExpressionParser parser;
auto&& expression = parser.GenerateRpnExpression(humanReadableExpression);
return 0;
}
ExpressionParser.h
#pragma once
#include <memory>
#include <stack>
#include <string>
#include <unordered_map>
namespace ExpressionCalculations
{
class ExpressionParser
{
public:
std::unique_ptr<std::string> GenerateRpnExpression(std::string &humanReadableExpression);
private:
// other code
};
}
ExpressionParser.cpp
#include <memory>
#include <stack>
#include <string>
#include <unordered_map>
#include <iostream>
#include "ExpressionParser.h"
namespace ExpressionCalculations
{
std::unique_ptr<std::string> ExpressionParser::GenerateRpnExpression(
std::string& humanReadableExpression)
{
std::unique_ptr<std::string> rpnExpression;
*rpnExpression="3456";
return rpnExpression;
}
Ce sont des fichiers CMake
principale CMakeLists.txt
cmake_minimum_required (VERSION 2.8)
project (ScientificCalculator_exe)
add_subdirectory(ExpressionCalculations)
add_executable(ScientificCalculator main.cpp)
target_link_libraries(ScientificCalculator ExpressionCalculations)
Module CMakeList.txt
set(calculators ExpressionParser.h ExpressionParser.cpp)
add_library(ExpressionCalculations ${calculators})
Quand je cours, je peux voir Entrez expression et passer l'entrée. Ensuite, je reçois une erreur de segmentation. Toutefois, lorsque je supprime la déclaration d'ExpressionParser et l'expression & & automatique, la chaîne est affichée, une chaîne peut être entrée et affichée dans la commande. J'ai vérifié la question de configuration multiple directories under cmake, https://cmake.org/cmake-tutorial/ et https://www.codeproject.com/Articles/1181455/A-CMake-tutorial-for-Visual-Cplusplus-developers mais il semble que j'ai correctement fait des fichiers cmake. Je n'ai aucune idée de pourquoi ça ne marche pas. J'utilise le dernier mingw64 sur Windows avec les paramètres de compilation par défaut.
J'ai ajouté cette expression, mais l'erreur se produit toujours. –