Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
0 / 0 / 0
Регистрация: 18.05.2025
Сообщений: 7

Удаляется exe файл при попытке компиляции

18.05.2025, 21:35. Показов 9737. Ответов 37
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Требуется написать программу, состоящую из нескольких файлов и использующую то, что в них содержится. В одном из файлов объявляется класс, его свойства и методы, во втором пишется их реализация. После подключения этих файлов к главному и попытке какого-либо взаимодействия между ними (объявления, определения переменной класса, создание вектора объектов этого класса и подобное) удаляется ехе файл и программа закономерно не может отработать. Проблема не в антивирусе, поскольку этот код я писал в файле, экзешник которого добавлен в исключения и который при запуске любой другой программы работает нормально. При чем онлайн компиляторы делают всё исправно. Вот код.

Файл book.h

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#pragma once
#include <string>
 
using namespace std;
 
class book{
    private:
        string author;
        string title;
        string publisher;
        int year;
        int pages;
    public:
        book();
        book(string inauthor, string intitle, string inpublisher, int inyear, int inpages);
        book(const book& orig);
 
        ~book();
 
        void setauthor(string inauthor);
        void settitle(string intitle);
        void setpublisher(string inpublisher);
        void setyear(int inyear);
        void setpages(int inpages);
 
        string getauthor();
        string gettitle();
        string getpublisher();
        int getyear();
        int getpages();
 
        void show();
};
Файл book.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include "book.h"
#include <iostream>
 
book::book(){
    author="";
    title="";
    publisher="";
    year=0;
    pages=0;
}
 
book::book(string inauthor, string intitle, string inpublisher, int inyear, int inpages){
    author=inauthor;
    title=intitle;
    publisher=inpublisher;
    year=inyear;
    pages=inpages;
}
 
book::book(const book& orig){
    author=orig.author;
    title=orig.title;
    publisher=orig.publisher;
    year=orig.year;
    pages=orig.pages;
}
 
book::~book(){
}
 
void book::setauthor(string inauthor){
    author=inauthor;
}
void book::settitle(string intitle){
    title=intitle;
}
void book::setpublisher(string inpublisher){
    publisher=inpublisher;
}
void book::setyear(int inyear){
    year=inyear;
}
void book::setpages(int inpages){
    pages=inpages;
}
 
string book::getauthor(){
    return author;
}
string book::gettitle(){
    return title;
}
string book::getpublisher(){
    return publisher;
}
int book::getyear(){
    return year;
}
int book::getpages(){
    return pages;
}
 
void book::show(){
    cout<<"Book's author: "<<author<<"\n"
    <<"Book's title: "<<title<<"\n"
    <<"Book's publisher: "<<publisher<<"\n"
    <<"Book's year of release: "<<year<<"\n"
    <<"Number of pages in the book: "<<pages<<"\n \n";
}
Файл main.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include "book.h"
#include <iostream>
#include <vector>
 
void menu(){
    cout<<"    Choose an option \n"
    <<"1: Add new books to the list \n"
    <<"2: Get a list of books of the same author \n"
    <<"3: Get a list of books with less pages than a certain amount \n"
    <<"4: Get a list of books published after a certain year: \n"
    <<"5: Close the program \n \n";
}
 
book donation(int iter){
    string newauthor;
    string newtitle;
    string newpublisher;
    int newyear;
    int newpages;
 
    cout<<iter<<" Enter the book's author: ";
    cin>>newauthor;
    
    cout<<" Enter the book's title: ";
    cin>>newtitle;
 
    cout<<" Enter the book's publisher: ";
    cin>>newpublisher;
 
    cout<<" Enter the book's year of release: ";
    cin>>newyear;
 
    cout<<" Enter the book's number of pages: ";
    cin>>newpages;
 
    book newbook(newauthor, newtitle, newpublisher, newyear, newpages);
 
    return newbook;
}
 
 
int main(){
    int amount;
    string key="";
    string prefauthor;
    int prefpages;
    int prefyear;
    vector <book> library={};
    while (1){
        menu();
        cin>>key;
        if (key=="1"){
            cout<<"\n How many books do you want to add? \n";
            cin>>amount;
            for (int i=0; i<amount; i++){
                book addbook=donation(i+1);
                library.push_back(addbook);
                cout<<"\n";
            }
        }
        else if (key=="2"){
            cout<<"Whose books do you want to see: \n";
            cin>>prefauthor;
            cout<<"\n";
            for (int i=0; i<library.size(); i++){
                cout<<"Book "<<i+1<<": \n";
                if (library[i].getauthor()==prefauthor){
                    library[i].show();
                }
            }
            system("pause");
        }
        else if (key=="3"){
            cout<<"How many pages are too many for you: \n";
            cin>>prefpages;
            cout<<"\n";
            for (int i=0; i<library.size(); i++){
                cout<<"Book "<<i+1<<": \n";
                if (library[i].getpages()<=prefpages){
                    library[i].show();
                }
            }
            system("pause");
        }
        else if (key=="4"){
            cout<<"Whose books do you want to see: \n";
            cin>>prefyear;
            cout<<"\n";
            for (int i=0; i<library.size(); i++){
                cout<<"Book "<<i+1<<": \n";
                if (library[i].getyear()>prefyear){
                    library[i].show();
                }
            }
            system("pause");
        }
        else if (key=="5"){
            break;
        }
        else{
            cout<<"kill yourself \n";
            system("pause");
        }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.05.2025, 21:35
Ответы с готовыми решениями:

Ошибка компиляции при попытке записать строку в файл
Всем привет!Мне нужно записать в файл c помощью объекта вот таким образом fout &lt;&lt; &quot;@echo off...

Удаляется .exe файл
Здравствуйте, у возникла проблема с программой в плане того что после закрытия программы .exe файл...

Не удаляется аварийно завершенный exe файл
Здравствуйте, подскажите пожалуйста, почему не удаляется ехе файл, если он завершился аварийно....

37
 Аватар для vlisp
1064 / 985 / 153
Регистрация: 10.08.2015
Сообщений: 5,364
19.05.2025, 16:48
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Драгонхартед Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void book::setauthor(string inauthor){
    author=inauthor;
}
void book::settitle(string intitle){
    title=intitle;
}
void book::setpublisher(string inpublisher){
    publisher=inpublisher;
}
void book::setyear(int inyear){
    year=inyear;
}
void book::setpages(int inpages){
    pages=inpages;
}
я бы за такое тоже по рукам бил. это же тупо харасмент...
задай себе вопрос: книга - изменяемый объект? Если тебя вдруг начнут называть Педро или Полиграфом и еще в старперы определят, тебе будет приятно?
0
 Аватар для vlisp
1064 / 985 / 153
Регистрация: 10.08.2015
Сообщений: 5,364
20.05.2025, 08:04
Деструктор не измняет книгу, а уничтожает ее
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,243
20.05.2025, 08:37
Цитата Сообщение от vlisp Посмотреть сообщение
а уничтожает ее
Деструктор не уничтожает объект.
Он тупо делает только то, что в нем написано.
Другое дело, что он вызывается при уничтожении объекта.

Файл book.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#pragma once
class book{
private:
    string author;
    string title;
    string publisher;
    int year;
    int pages;
public:
    book();
    book(string inauthor, string intitle, string inpublisher, int inyear, int inpages);
    book(const book& orig);
    ~book(){}
    book& operator=(const book& orig);
 
    void show(ostream& os);
 
    string getauthor(){return author;}
    int getpages(){return pages;}
    int getyear(){return year;}
};
ostream& operator<<(ostream& os,book& orig);
Файл book.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <string>
#include <iostream>
using namespace std;
 
#include "book.h"
 
book::book(){
    author="";
    title="";
    publisher="";
    year=0;
    pages=0;
}
 
book::book(string inauthor, string intitle, string inpublisher, int inyear, int inpages){
    author=inauthor;
    title=intitle;
    publisher=inpublisher;
    year=inyear;
    pages=inpages;
}
 
book::book(const book& orig){
    author=orig.author;
    title=orig.title;
    publisher=orig.publisher;
    year=orig.year;
    pages=orig.pages;
}
book& book::operator=(const book& orig){
    author=orig.author;
    title=orig.title;
    publisher=orig.publisher;
    year=orig.year;
    pages=orig.pages;
    return *this;
}
void book::show(ostream& os){
    os<<"Book's author: "<<author<<"\n"
        <<"Book's title: "<<title<<"\n"
        <<"Book's publisher: "<<publisher<<"\n"
        <<"Book's year of release: "<<year<<"\n"
        <<"Number of pages in the book: "<<pages<<"\n \n";
}
ostream& operator<<(ostream& os,book& orig)
{
    orig.show(os);
    return os;
}
Файл main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include "book.h"
#include <iostream>
#include <string>
#include <vector>
 
void menu(){
    cout<<"    Choose an option \n"
        <<"1: Add new books to the list \n"
        <<"2: Get a list of books of the same author \n"
        <<"3: Get a list of books with less pages than a certain amount \n"
        <<"4: Get a list of books published after a certain year: \n"
        <<"5: Close the program \n \n";
}
 
int main(){
    vector<book> library;
    while (true)
    {
        menu();
        int key;
        cin>>key;
        cin.get(); //  !!!!!!!!!!!!! 
        switch(key)
        {
        case 1:
        {
            cout<<"\n How many books do you want to add? \n";
            int amount;
            cin>>amount;
            cin.get(); //  !!!!!!!!!!!!! 
            for (int i=0; i<amount; i++){
                string newauthor;
                string newtitle;
                string newpublisher;
                int newyear;
                int newpages;
 
                cout<<i<<" Enter the book's author: ";
                getline(cin,newauthor); //  !!!!!!!!!!!!! 
 
                cout<<" Enter the book's title: ";
                getline(cin,newtitle);
 
                cout<<" Enter the book's publisher: ";
                getline(cin,newpublisher);
 
                cout<<" Enter the book's year of release: ";
                cin>>newyear;
 
                cout<<" Enter the book's number of pages: ";
                cin>>newpages;
                cin.get(); //  !!!!!!!!!!!!! 
 
                book newbook(newauthor, newtitle, newpublisher, newyear, newpages);
                library.push_back(newbook);
                cout<<"\n";
            }
        }
        break;
        case 2:
        {
            cout<<"Which author's books should be shown?: \n";
            string prefauthor;
            getline(cin,prefauthor); //  !!!!!!!!!!!!! 
            cout<<"\n";
            for (size_t i=0; i<library.size(); i++){
                cout<<"Book "<<i+1<<": \n";
                if (library[i].getauthor()==prefauthor){
                    cout<<library[i];
                }
            }
            system("pause");
        }
        break;
        case 3:
        {
            cout<<"Books with maximum number of pages should be shown?: \n";
            int prefpages;
            cin>>prefpages;cin.get();
            cout<<"\n";
            for (size_t i=0; i<library.size(); i++){
                cout<<"Book "<<i+1<<": \n";
                if (library[i].getpages()<=prefpages){
                    cout<<library[i];
                }
            }
            system("pause");
        }
        break;
        case 4:
        {
            cout<<"Minimum year of publication for books should be shown?: \n";
            int prefyear;
            cin>>prefyear;cin.get();
            cout<<"\n";
            for (size_t i=0; i<library.size(); i++){
                cout<<"Book "<<i+1<<": \n";
                if (library[i].getyear()>prefyear){
                    cout<<library[i];
                }
            }
            system("pause");
        }
        break;
        case 5:
            return 0;
        default:
            cout<<"kill yourself \n";
            system("pause");
            break;
        }
    }
    return 1;
}
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,532
Записей в блоге: 1
20.05.2025, 13:26
Цитата Сообщение от vlisp Посмотреть сообщение
я бы за такое тоже по рукам бил. это же тупо харасмент...
задай себе вопрос: книга - изменяемый объект? Если тебя вдруг начнут называть Педро или Полиграфом и еще в старперы определят, тебе будет приятно?
всё изменяемое, кроме кода программы и прочих низкоуровневых заморочек. Любая переменная на то и переменная, что изменяется.
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
20.05.2025, 14:18
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
кроме кода программы
Программы тоже изменяются, например полиморфные вирусы. Это тоже всего лишь программы.
0
 Аватар для volodin661
6686 / 2278 / 347
Регистрация: 10.12.2013
Сообщений: 7,873
20.05.2025, 20:11
Решил развлечься с инопланетным разумом
===================== [ЧАТ] =================================
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
C++ lang: Create class Books with properties: author,title,publisher,year,pages
and two constructors. 
Provide  getters and setters for all properties;
Provide reports in main class a) All authors; b)Allbooks c) Books by authors;
Project consist of 4 files: 
1) file with headers Books.hpp  
2) Class Books implementation Books.cpp  
3) populate.cpp with reading and populating Books from provided XML-file books.xml 
4) main function Main.cpp
 
Provide Makefile with CMake 
Provide command to install newer upstream  LibXML2 library using msys2 toolset
 
Environment - Windows; Toolset - MSYS2
======================================== ===============


(Про populate и библиотеку LibXml2 добавил после, чтоб посмотреть, как он с этим справится.
Справился - выкинул из main.cpp рукотворное заполнение экземпляра класса Book
и вставил взамен вызов функции из populate.cpp)

1. File Structure
Code
1
2
3
4
5
6
7
8
9
 books
├── CMakeLists.txt
└── build
    ├── books.cpp
    ├── books.hpp
    ├── books.xml
    ├── main.cpp
    ├── populate.cpp
    └── populate.hpp
2. Header File: Book.hpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#ifndef BOOKS_HPP
#define BOOKS_HPP
 
#include <string>
 
class Books {
private:
    std::string author;
    std::string title;
    std::string publisher;
    int year;
    int pages;
 
public:
    // Default constructor
    Books();
 
    // Parameterized constructor
    Books(const std::string& author, const std::string& title,
          const std::string& publisher, int year, int pages);
 
    // Getters
    std::string getAuthor() const;
    std::string getTitle() const;
    std::string getPublisher() const;
    int getYear() const;
    int getPages() const;
 
    // Setters
    void setAuthor(const std::string& author);
    void setTitle(const std::string& title);
    void setPublisher(const std::string& publisher);
    void setYear(int year);
    void setPages(int pages);
};
 
#endif // BOOKS_HPP
3. Implementation File: Book.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include "Books.hpp"
 
// Default constructor
Books::Books()
    : author(""), title(""), publisher(""), year(0), pages(0) {}
 
// Parameterized constructor
Books::Books(const std::string& author, const std::string& title,
             const std::string& publisher, int year, int pages)
    : author(author), title(title), publisher(publisher), year(year), pages(pages) {}
 
// Getters
std::string Books::getAuthor() const { return author; }
std::string Books::getTitle() const { return title; }
std::string Books::getPublisher() const { return publisher; }
int Books::getYear() const { return year; }
int Books::getPages() const { return pages; }
 
// Setters
void Books::setAuthor(const std::string& author) { this->author = author; }
void Books::setTitle(const std::string& title) { this->title = title; }
void Books::setPublisher(const std::string& publisher) { this->publisher = publisher; }
void Books::setYear(int year) { this->year = year; }
void Books::setPages(int pages) { this->pages = pages; }
4. Main Program: main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream>
#include <vector>
#include <set>
#include <map>
#include "Books.hpp"
#include "populate.hpp"
 
int main() {
    std::vector<Books> books;
    if (!loadBooksFromXML("books.xml", books)) {
        std::cerr << "Error loading books from XML." << std::endl;
        return 1;
    }
 
    // a) All authors
    std::set<std::string> authors;
    for (const auto& b : books) {
        authors.insert(b.getAuthor());
    }
 
    std::cout << "All authors:" << std::endl;
    for (const auto& author : authors) {
        std::cout << "- " << author << std::endl;
    }
    std::cout << std::endl;
 
    // b) All books
    std::cout << "All books:" << std::endl;
    for (const auto& b : books) {
        std::cout << "Title: " << b.getTitle()
                  << ", Author: " << b.getAuthor()
                  << ", Publisher: " << b.getPublisher()
                  << ", Year: " << b.getYear()
                  << ", Pages: " << b.getPages()
                  << std::endl;
    }
    std::cout << std::endl;
 
    // c) Books by authors
    std::map<std::string, std::vector<Books>> booksByAuthor;
    for (const auto& b : books) {
        booksByAuthor[b.getAuthor()].push_back(b);
    }
 
    std::cout << "Books by authors:" << std::endl;
    for (const auto& entry : booksByAuthor) {
        std::cout << "Author: " << entry.first << std::endl;
        for (const auto& b : entry.second) {
            std::cout << "  - " << b.getTitle() << std::endl;
        }
    }
 
    return 0;
}

populate.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include "Books.hpp"
#include <vector>
#include <string>
#include <iostream>
#include <libxml/parser.h>
#include <libxml/tree.h>
 
// Function to trim whitespace
static std::string trim(const std::string& str) {
    const char* whitespace = " \t\n\r";
    size_t start = str.find_first_not_of(whitespace);
    size_t end = str.find_last_not_of(whitespace);
    if (start == std::string::npos || end == std::string::npos)
        return "";
    return str.substr(start, end - start + 1);
}
 
// Function to parse XML and populate books vector
bool loadBooksFromXML(const std::string& filename, std::vector<Books>& books) {
    xmlDocPtr doc = xmlReadFile(filename.c_str(), nullptr, 0);
    if (doc == nullptr) {
        std::cerr << "Failed to parse " << filename << std::endl;
        return false;
    }
 
    xmlNodePtr root = xmlDocGetRootElement(doc);
    if (root == nullptr) {
        std::cerr << "Empty XML document" << std::endl;
        xmlFreeDoc(doc);
        return false;
    }
 
    for (xmlNodePtr node = root->children; node != nullptr; node = node->next) {
        if (node->type == XML_ELEMENT_NODE && xmlStrEqual(node->name, BAD_CAST "book")) {
            std::string author, title, publisher;
            int year = 0, pages = 0;
 
            for (xmlNodePtr child = node->children; child != nullptr; child = child->next) {
                if (child->type == XML_ELEMENT_NODE) {
                    std::string content;
                    if (xmlChar* prop = xmlNodeGetContent(child)) {
                        content = (const char*)prop;
                        xmlFree(prop);
                    }
 
                    if (xmlStrEqual(child->name, BAD_CAST "author")) {
                        author = trim(content);
                    } else if (xmlStrEqual(child->name, BAD_CAST "title")) {
                        title = trim(content);
                    } else if (xmlStrEqual(child->name, BAD_CAST "publisher")) {
                        publisher = trim(content);
                    } else if (xmlStrEqual(child->name, BAD_CAST "year")) {
                        year = std::stoi(trim(content));
                    } else if (xmlStrEqual(child->name, BAD_CAST "pages")) {
                        pages = std::stoi(trim(content));
                    }
                }
            }
 
            books.emplace_back(author, title, publisher, year, pages);
        }
    }
 
    xmlFreeDoc(doc);
    return true;
}
populate.hpp
C++
1
2
3
4
#ifndef POPULATE_HPP
#define POPULATE_HPP
bool loadBooksFromXML(const std::string& filename, std::vector<Books>& books);
#endif
5. CMakeLists.txt (CMake build configuration)
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
cmake_minimum_required(VERSION 3.10)
project(BooksProject)
 
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
# Find libxml2
find_package(PkgConfig REQUIRED)
pkg_check_modules(LIBXML2 REQUIRED libxml-2.0)
 
# Include directories
include_directories(${LIBXML2_INCLUDE_DIRS})
 
# Source files
add_executable(BooksApp Main.cpp populate.cpp Books.cpp)
 
# Link libraries
target_link_libraries(BooksApp ${LIBXML2_LIBRARIES})
target_include_directories(BooksApp PRIVATE ${LIBXML2_INCLUDE_DIRS})


books.XML
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<library>
    <book>
        <author>Arnold Robbins</author>
        <title>Effective awk Programming</title>
        <publisher>OReilly</publisher>
        <year>2020</year>
        <pages>350</pages>
    </book>
    <book>
        <author>Leo Tolstoy</author>
        <title>Anna Karenina</title>
        <publisher>Apple Books</publisher>
        <year>2018</year>
        <pages>1432</pages>
    </book>
    <book>
        <author>Никлас Натт-о-Даг</author>
        <title>1793. История одного убийства</title>
        <publisher>Publisher B</publisher>
        <year>2018</year>
        <pages>530</pages>
    </book>
    <book>
        <author>Vitaly Bragilevsky</author>
        <title>Haskell in Depth</title>
        <publisher>Manning</publisher>
        <year>2021</year>
        <pages>1200</pages>
    </book>
</library>
7. MSYS2 Installation Commands
PowerShell
1
2
3
4
5
6
7
8
# Update the package database and core system packages
pacman -Syu
 
# Close MSYS2 terminal, reopen it, then run:
pacman -Su
 
# Install g++ compiler and make tool
pacman -S --needed base-devel mingw-w64-x86_64-gcc
8. Building and Running

Using CMake:
PowerShell
1
2
3
4
cd books/build
cmake ..
make
./BooksApp
Output:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
All authors:
- Arnold Robbins
- Leo Tolstoy
- Vitaly Bragilevsky
- Никлас Натт-о-Даг
 
All books:
Title: Effective awk Programming, Author: Arnold Robbins, Publisher: OReilly, Year: 2020, Pages: 350
Title: Anna Karenina, Author: Leo Tolstoy, Publisher: Apple Books, Year: 2018, Pages: 1432
Title: 1793. История одного убийства, Author: Никлас Натт-о-Даг, Publisher: Publisher B, Year: 2018, Pages: 530
Title: Haskell in Depth, Author: Vitaly Bragilevsky, Publisher: Manning, Year: 2021, Pages: 1200
 
Books by authors:
Author: Arnold Robbins
  - Effective awk Programming
Author: Leo Tolstoy
  - Anna Karenina
Author: Vitaly Bragilevsky
  - Haskell in Depth
Author: Никлас Натт-о-Даг
  - 1793. История одного убийства
PS:
1) MS VisualStudio снести.
2) MS VS Code установить и MSYS2 установить:
PowerShell
1
2
3
4
scoop bucket add main
scoop install main/msys2
scoop bucket add extras
scoop install extras/vscode
0
фрилансер
 Аватар для Алексей1153
6454 / 5655 / 1129
Регистрация: 11.10.2019
Сообщений: 15,058
20.05.2025, 22:14
Цитата Сообщение от volodin661 Посмотреть сообщение
// Default constructor
Books::Books()
    : author(""), title(""), publisher(""), year(0), pages(0) {}
ужас такой дефолтный конструктор

и вообще, все самые элементарные функции в ЕТ вытаращены - прощай инлайн
0
 Аватар для volodin661
6686 / 2278 / 347
Регистрация: 10.12.2013
Сообщений: 7,873
21.05.2025, 02:18
Бесплатная жопэтэ,
сделала ровно то, что заказывал студент;
3 секунды, с первой же попытки ни одной ошибки, заказанную систему сборки реализовала,
внешнюю библиотеку подтянула. Я с ней( с ним? ) ни словом не обмолвился.
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
21.05.2025, 03:26
Цитата Сообщение от volodin661 Посмотреть сообщение
сделала ровно то, что заказывал студент;
У студента разве был не рабочий код?
0
 Аватар для Storm Screamer
4849 / 1415 / 116
Регистрация: 21.04.2013
Сообщений: 8,598
21.05.2025, 03:38
Цитата Сообщение от volodin661 Посмотреть сообщение
сделала ровно то, что заказывал студент;
Перестал удаляться файл?
0
 Аватар для volodin661
6686 / 2278 / 347
Регистрация: 10.12.2013
Сообщений: 7,873
21.05.2025, 06:47
Цитата Сообщение от SmallEvil Посмотреть сообщение
например полиморфные вирусы.
Полиморфные вирусы ?
Например ?
0
 Аватар для vlisp
1064 / 985 / 153
Регистрация: 10.08.2015
Сообщений: 5,364
21.05.2025, 10:55
Цитата Сообщение от zss Посмотреть сообщение
Деструктор не уничтожает объект.
Он тупо делает только то, что в нем написано.
он именно уничтожает объект на своем уровне абстракции.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6194 / 2895 / 1043
Регистрация: 01.06.2021
Сообщений: 10,622
21.05.2025, 11:49
Цитата Сообщение от SmallEvil Посмотреть сообщение
Программы тоже изменяются
прям если говорить об изменении программного кода на лету, то такое возможно только на старинных процах и ОС. На винде этого не допустит DEP. Кроме того, сами современные процессоры тоже различают кэши кода и кэши для данных. При этом кэши кода не поддерживают запись.

Но можно реализовать другую схему. Учитывая, что на винде исполняемый файл будет блокирован, то можно предположить вариант, когда программа А запускает программу Б, а сама завершается. Программа Б удаляет А и на ее месте генерируют новую копию А, после чего запускает эту копию и сама завершается. Но тут сложно говорить о самоизменении программы, поскольку программа А не сама меняется, а ее меняет Б.
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
24.05.2025, 09:57
Цитата Сообщение от Royal_X Посмотреть сообщение
На винде этого не допустит DEP.
На винде есть функция VirtualProtect.
0
Software Engineer
 Аватар для Custos
332 / 335 / 55
Регистрация: 23.09.2014
Сообщений: 996
24.05.2025, 12:57
Цитата Сообщение от Royal_X Посмотреть сообщение
На винде этого не допустит DEP
Наличие DEP никак не противоречит возможности изменения исполняемого кода. DEP лишь не позволяет передать управление в неисполняемую область памяти.
Как уже упомянули выше, Windows предоставляет возможность из RX секции сделать RWX, внести нужные изменения и сделать ее снова RX.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6194 / 2895 / 1043
Регистрация: 01.06.2021
Сообщений: 10,622
24.05.2025, 13:55
Цитата Сообщение от Custos Посмотреть сообщение
Windows предоставляет возможность из RX секции сделать RWX, внести нужные изменения и сделать ее снова RX.
и винда спокойно на это реагирует?

тут туториал из нескольких частей, который описывает как разработать вирус на винде

https://4p0cryph0n.github.io/m... lopment-1/
https://4p0cryph0n.github.io/m... lopment-2/
https://4p0cryph0n.github.io/m... lopment-3/
https://4p0cryph0n.github.io/m... lopment-4/
https://4p0cryph0n.github.io/m... lopment-5/

Чел применяет множество техник, чтобы винда не реагировала на его прогу. Хотя, сомневаюсь, что это будет работать. Встроенная защита винды блокирует самые безопасные файлы, а такую шнягу точно сожрет.
0
Software Engineer
 Аватар для Custos
332 / 335 / 55
Регистрация: 23.09.2014
Сообщений: 996
24.05.2025, 15:16
Цитата Сообщение от Royal_X Посмотреть сообщение
и винда спокойно на это реагирует?
Зависит от того, что пытаются реализовать используя эту возможность
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12937 / 6804 / 1821
Регистрация: 18.10.2014
Сообщений: 17,218
07.06.2025, 19:01
Цитата Сообщение от zss Посмотреть сообщение
Деструктор не уничтожает объект.
Он тупо делает только то, что в нем написано.
Деструктор класса в очевидном смысле "симметричен" конструктору класса. И, как и конструктор, деструктор в общем случае делает еще много чего, что в нем не написано, а содержится неявно.

В частности, например, при удалении динамического объекта через delete в популярных реализациях освобождение сырой памяти объекта (т.е. вызов operator delete) делается именно изнутри деструктора. Хотя этого в нем "не написано".
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.06.2025, 19:01
Помогаю со студенческими работами здесь

При попытке компиляции на ноутбуке вылезает данная ошибка. Что это?
Вот текст ошибки. Причем на чужом ноуте компилилось нормально, здесь вдруг траблы какие-то. С...

Ошибка при попытке компиляции и последующего запуска программы
Доброго времени суток! Недавно появился один глюк, который очень сильно напрягает и который я уже...

Ошибки компиляции при попытке использования boost::filesystem
Имею простейший пример : #include &lt;boost/filesystem.hpp&gt; #include...

Ошибка при попытке компиляции стороннего проекта
В общем это мой первый опыт работы с либами от сторонних пользователей, а так как это C++, тут все...

Ошибка при попытке компиляции через GCC
https://www.cyberforum.ru/attachment.php?attachmentid=1481175&amp;stc=1&amp;d=1723539913 вот что пишет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
38
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru