Форум программистов, компьютерный форум, киберфорум
C++/CLI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
3 / 3 / 1
Регистрация: 20.01.2015
Сообщений: 100

Переписываем код с C++ Builder на C++/CLI

01.07.2015, 11:48. Показов 2933. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь переписать с Builder на Visual с++ код программы вот отсюда:
http://we.easyelectronics.ru/e... v-usb.html
Вот этот кусок не работает:
Кликните здесь для просмотра всего текста
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
//---------------------------------------------------------------------------
#define  uchar  unsigned char
 
#include <vcl.h>
#pragma hdrstop
#include "main.h"
 
#include "hidlibrary.h" // Библиотека для работы с Hid устройствами
 
 
#include "../Hid_example_firmware/usbconfig.h"  // Здесь пишем путь к usbconfig.h
char  vendorName[]  = {USB_CFG_VENDOR_NAME, 0}; // для того что бы знать как
char  productName[] = {USB_CFG_DEVICE_NAME, 0}; // называется наше устройство
 
 
struct dataexchange_t           // Описание структуры для передачи данных
{
   uchar b1;        // Я решил для примера написать структуру на 3 байта.
   uchar b2;        // На каждый байт подцепим ногу из PORTB. Конечно это
   uchar b3;        // не рационально (всего то 3 бита нужно).
};                  // Но в целях демонстрации в самый раз.
                    // Для наглядности прикрутить по светодиоду и созерцать :)
 
struct dataexchange_t pdata = {0, 0, 0};
 
HIDLibrary <dataexchange_t> hid; // создаем экземпляр класса с типом нашей структуры
в начале ругалась эта часть:
C++
1
2
3
#include "../Hid_example_firmware/usbconfig.h"  // Здесь пишем путь к usbconfig.h
char  vendorName[]  = {USB_CFG_VENDOR_NAME, 0}; // для того что бы знать как
char  productName[] = {USB_CFG_DEVICE_NAME, 0}; // называется наше устройство

исправил таким образом:
Кликните здесь для просмотра всего текста
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
#pragma once
 
 
namespace zxzx {
 
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
 
 
#ifndef __usbconfig_h_included__
#define __usbconfig_h_included__
 
 
#define USB_CFG_IOPORTNAME      D
#define USB_CFG_DMINUS_BIT      4
#define USB_CFG_DPLUS_BIT       2
#define USB_CFG_CLOCK_KHZ       (F_CPU/1000)
#define USB_CFG_CHECK_CRC       0
 
#define USB_CFG_HAVE_INTRIN_ENDPOINT    1
#define USB_CFG_HAVE_INTRIN_ENDPOINT3   0
#define USB_CFG_EP3_NUMBER              3
#define USB_CFG_IMPLEMENT_HALT          0
#define USB_CFG_SUPPRESS_INTR_CODE      0
#define USB_CFG_INTR_POLL_INTERVAL      100
#define USB_CFG_IS_SELF_POWERED         0
#define USB_CFG_MAX_BUS_POWER           100
#define USB_CFG_IMPLEMENT_FN_WRITE      1
#define USB_CFG_IMPLEMENT_FN_READ       1
#define USB_CFG_IMPLEMENT_FN_WRITEOUT   0
#define USB_CFG_HAVE_FLOWCONTROL        0
#define USB_CFG_DRIVER_FLASH_PAGE       0
#define USB_CFG_LONG_TRANSFERS          0
#define USB_COUNT_SOF                   0
#define USB_CFG_CHECK_DATA_TOGGLING     0
#define USB_CFG_HAVE_MEASURE_FRAME_LENGTH   0
#define USB_USE_FAST_CRC                0
 
#define  USB_CFG_VENDOR_ID       0xc0, 0x16 /* = 0x16c0 = 5824 = voti.nl */
#define  USB_CFG_DEVICE_ID       0xdf, 0x05 /* obdev's shared PID for HIDs */
#define USB_CFG_DEVICE_VERSION  0x00, 0x01
#define USB_CFG_VENDOR_NAME     'w', 'e', '.', 'e', 'a', 's', 'y', 'e', 'l', 'e', 'c', 't', 'r', 'o', 'n', 'i', 'c', 's', '.', 'r', 'u'
#define USB_CFG_VENDOR_NAME_LEN 21
#define USB_CFG_DEVICE_NAME     'H', 'i', 'd', ' ', 'e', 'x', 'a', 'm', 'p', 'l', 'e'
#define USB_CFG_DEVICE_NAME_LEN 11
#define USB_CFG_DEVICE_CLASS        0
#define USB_CFG_DEVICE_SUBCLASS     0
 
#define USB_CFG_INTERFACE_CLASS     3
#define USB_CFG_INTERFACE_SUBCLASS  0
#define USB_CFG_INTERFACE_PROTOCOL  0
#define USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH    22
 
#define USB_CFG_DESCR_PROPS_DEVICE                  0
#define USB_CFG_DESCR_PROPS_CONFIGURATION           0
#define USB_CFG_DESCR_PROPS_STRINGS                 0
#define USB_CFG_DESCR_PROPS_STRING_0                0
#define USB_CFG_DESCR_PROPS_STRING_VENDOR           0
#define USB_CFG_DESCR_PROPS_STRING_PRODUCT          0
#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER    0
#define USB_CFG_DESCR_PROPS_HID                     0
#define USB_CFG_DESCR_PROPS_HID_REPORT              0
#define USB_CFG_DESCR_PROPS_UNKNOWN                 0
 
#endif /* __usbconfig_h_included__ */
 
 
char  vendorName[]  = {USB_CFG_VENDOR_NAME, 0}; // для того что бы знать как
char  productName[] = {USB_CFG_DEVICE_NAME, 0}; // называется наше устройство
 
#define  uchar  unsigned char
 
 
struct dataexchange_t           // Описание структуры для передачи данных
{
   uchar b1;        // Я решил для примера написать структуру на 3 байта.
   uchar b2;        // На каждый байт подцепим ногу из PORTB. Конечно это
   uchar b3;        // не рационально (всего то 3 бита нужно).
};                  // Но в целях демонстрации в самый раз.
                    // Для наглядности прикрутить по светодиоду и созерцать :)
 
struct dataexchange_t pdata = {0, 0, 0};
 
 
 
    /// <summary>
    /// Сводка для Form1
    /// </summary>
 
    public ref class Form1 : public System::Windows::Forms::Form
    {
    public:
        Form1(void)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //
        }

но теперь ругается вот этот кусок:
Кликните здесь для просмотра всего текста
C++
1
struct dataexchange_t pdata = {0, 0, 0};

а именно пишет:
Кликните здесь для просмотра всего текста

1>d:\avr\program\1.0\zxzx\zxzx\Form1.h(1 62): error C2065: tHIDLibrary: необъявленный идентификатор
1>d:\avr\program\1.0\zxzx\zxzx\Form1.h(1 62): error C2275: zxzx::dataexchange_t: недопустимое использование этого типа в качестве выражения
1> d:\avr\program\1.0\zxzx\zxzx\Form1.h(79) : см. объявление "zxzx::dataexchange_t"
1>d:\avr\program\1.0\zxzx\zxzx\Form1.h(1 62): error C2065: hid: необъявленный идентификатор

как его победить подскажите пожалуйста?
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.07.2015, 11:48
Ответы с готовыми решениями:

Переписать код на C++ в C++/CLI
Подскажите пожалуйста как такой код написать в CLR #include &lt;iostream&gt; using namespace std; void NEW(int a, int&amp;lol) { lol =...

Перевести код с Pascal на С++/CLI
program project1; var k,m,i,j,fl:integer; mn:set of byte; a:array of double;//по условию размер(1;10)=и она вещественная ...

Перевести код из С# в C++/CLI (с использованием System.Runtime.Remoting)
Помогите перевести код из С# в C++/CLI Клиент код: using System.Threading.Tasks; using System.Runtime.Remoting; using...

5
 Аватар для SherHun
31 / 31 / 22
Регистрация: 22.06.2015
Сообщений: 102
01.07.2015, 22:56
Цитата Сообщение от war321 Посмотреть сообщение
Вот этот кусок не работает:
В смысле, в Builder всё в порядке, работает ?
0
02.07.2015, 01:15
Перенесено из раздела C++ Builder
0
3 / 3 / 1
Регистрация: 20.01.2015
Сообщений: 100
02.07.2015, 09:03  [ТС]
Цитата Сообщение от war321 Посмотреть сообщение
Вот этот кусок не работает:
В смысле, в Builder всё в порядке, работает ?
- в Builder работает а в Microsoft Visual Studio Express не работает.. Поэтому переписываю код для Microsoft Visual Studio Express - в указанном куске выдаёт ошибку.
0
 Аватар для SherHun
31 / 31 / 22
Регистрация: 22.06.2015
Сообщений: 102
02.07.2015, 21:06
сделайте что-нибудь консольное,
да не мучайтесь с формами, типа
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
#include<iostream>
#include<Windows.h>
#include "hidlibrary.h"
 
#define USB_CFG_VENDOR_NAME     'w', 'e', '.', 'e', 'a', 's', 'y', 'e', 'l', 'e', 'c', 't', 'r', 'o', 'n', 'i', 'c', 's', '.', 'r', 'u'
#define USB_CFG_DEVICE_NAME     'H', 'i', 'd', ' ', 'e', 'x', 'a', 'm', 'p', 'l', 'e'
 
struct CheckBox
{
    bool Checked;
    friend  std::ostream & operator << (std::ostream & os, const CheckBox & chbox)
    {
        if (chbox.Checked)
            os << 'v';
        else
            os << ' ';
        return os;
    }
};
 
CheckBox CheckBox1, CheckBox2, CheckBox3;
 
char  vendorName[] = { USB_CFG_VENDOR_NAME, 0 }; // для того что бы знать как
char  productName[] = { USB_CFG_DEVICE_NAME, 0 }; // называется наше устройство
 
int CorrectInput()
{
    char str[100];
    int res = -1;
    while (true)
    {
        std::cout << "Input value : 0 or 1.\n";
        std::cin >> str;
        res =  atoi(str);
        if (res == 0 || res == 1)
            break;
        else
            std::cout << "Error.\n";
    }
    return  res;
}
 
 
 
struct dataexchange_t           // Описание структуры для передачи данных
{
    unsigned char b1;        // Я решил для примера написать структуру на 3 байта.
    unsigned char b2;        // На каждый байт подцепим ногу из PORTB. Конечно это
    unsigned char b3;        // не рационально (всего то 3 бита нужно).
};                  // Но в целях демонстрации в самый раз.
// Для наглядности прикрутить по светодиоду и созерцать :)
 
struct dataexchange_t pdata = { 0, 0, 0 };
 
HIDLibrary <dataexchange_t> hid; // создаем экземпляр класса с типом нашей структуры
 
 
//---------------------------------------------------------------------------
 
int connect()  // этой функцией будем подключаться к устройству
{
    int i, n, res = 0;
    std::string exampleDeviceName = "";
 
    exampleDeviceName += vendorName;
    exampleDeviceName += " ";
    exampleDeviceName += productName;
 
    n = hid.EnumerateHIDDevices(); // узнаем все Hid устройства vid_16c0&pid_05df
    // vid и pid указаны в hidlibrary.h константой idstring
 
    for (i = 0; i<n; i++)            // ищем среди них наше
    {
        hid.Connect(i);
 
        // GetConnectedDeviceName() возвращает string,
        // где через пробел указаны vendor и product Name.
        // Сравниваем, если совпало - значить устройство наше
        if (hid.GetConnectedDeviceName() == exampleDeviceName)
        {
            res = 1;
            break;
        }
    }
    return res;
}
//---------------------------------------------------------------------------
 
// Кнопка "Принять данные"
void Button1Click()
{
    if (1 == connect())
    {
        hid.ReceiveData(&pdata);           // Читаем данные с устройства
        
        CheckBox1.Checked = (bool)pdata.b1;
        CheckBox2.Checked = (bool)pdata.b2;
        CheckBox3.Checked = (bool)pdata.b3;
    }
    else
    {
        std::string s = "";
        s += vendorName;
        s += " ";
        s += productName;
        s += " no connection.";
        //std::cout << s << std::endl;
        MessageBox(NULL, s.c_str(), "", NULL);
    }
}
//---------------------------------------------------------------------------
 
// Кнопка "Отправить данные"
void Button2Click()
{
    if (1 == connect())
    {
            pdata.b1 = (int)CheckBox1.Checked;
            pdata.b2 = (int)CheckBox2.Checked;
            pdata.b3 = (int)CheckBox3.Checked;
 
        hid.SendData(&pdata);           // Отправляем данные устройству
    }
    else
    {
        std::string s = "";
        s += vendorName;
        s += " ";
        s += productName;
        s += " no connection.";
        //std::cout << s << std::endl;
        MessageBox(NULL, s.c_str(), "", NULL);
    }
}
 
 
void SetCheckBoxes()
{
    std::cout << "CheckBox1" << std::endl;
    CheckBox1.Checked = CorrectInput();
    std::cout << "CheckBox2" << std::endl;
    CheckBox2.Checked = CorrectInput();
    std::cout << "CheckBox3" << std::endl;
    CheckBox3.Checked = CorrectInput();
}
int main()
{
 
    int res = 0;
    char str[100];
 
    while (true)
    {
        system("cls");
        std::cout << "    [" << CheckBox1 << "] CheckBox1\n";
        std::cout << "    [" << CheckBox2 << "] CheckBox2\n";
        std::cout << "    [" << CheckBox3 << "] CheckBox3\n";
        
        std::cout << "\n  1.Receive data\n";
        std::cout << "  2.Send data\n";
        std::cout << "  3.Set checkBoxes\n";
        std::cout << "  Your choice ?: ";
 
        
        std::cin >> str;
        res = atoi(str);
 
        if (res == 1)
            Button1Click();
        else if (res == 2)
            Button2Click();
        else if (res == 3)
            SetCheckBoxes();
        else
            continue;
    }
 
    std::cin.get();
    return 0;
}

в hidlibrary.h вписал
#pragma comment (lib, "setupapi.lib")

C++
1
2
3
4
5
#include <setupapi.h>
#include <string>
#include <vector>
#include <map>
#pragma comment (lib, "setupapi.lib")


В формах тоже получилось

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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#pragma once
 
#include "hidlibrary.h"
#include <string>
#include <msclr/marshal_cppstd.h>
 
#define USB_CFG_VENDOR_NAME     'w', 'e', '.', 'e', 'a', 's', 'y', 'e', 'l', 'e', 'c', 't', 'r', 'o', 'n', 'i', 'c', 's', '.', 'r', 'u'
#define USB_CFG_DEVICE_NAME     'H', 'i', 'd', ' ', 'e', 'x', 'a', 'm', 'p', 'l', 'e'
 
char  vendorName[] = { USB_CFG_VENDOR_NAME, 0 }; // для того что бы знать как
char  productName[] = { USB_CFG_DEVICE_NAME, 0 }; // называется наше устройство
 
 
struct dataexchange_t           // Описание структуры для передачи данных
{
    unsigned char b1;        // Я решил для примера написать структуру на 3 байта.
    unsigned char  b2;        // На каждый байт подцепим ногу из PORTB. Конечно это
    unsigned char  b3;        // не рационально (всего то 3 бита нужно).
};                  // Но в целях демонстрации в самый раз.
// Для наглядности прикрутить по светодиоду и созерцать :)
 
struct dataexchange_t pdata = { 0, 0, 0 };
 
HIDLibrary <dataexchange_t> hid; // создаем экземпляр класса с типом нашей структуры
 
namespace zxzx {
 
    
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
 
    public ref class Form1 : public System::Windows::Forms::Form
    {
    public:
        Form1(void)
        {
            InitializeComponent();
 
            vendorName += USB_CFG_VENDOR_NAME; // для того что бы знать как
            productName += USB_CFG_DEVICE_NAME; // называется наше устройство
 
        }
 
        String^ vendorName; // для того что бы знать как
        String^  productName;//  называется наше устройство
 
 
 
    public:
        int connect()  // этой функцией будем подключаться к устройству
        {
            int i, n, res = 0;
            String^  exampleDeviceName = "";
 
            exampleDeviceName += vendorName;
            exampleDeviceName += " ";
            exampleDeviceName += productName;
 
            n = hid.EnumerateHIDDevices(); // узнаем все Hid устройства vid_16c0&pid_05df
            // vid и pid указаны в hidlibrary.h константой idstring
 
            for (i = 0; i<n; i++)            // ищем среди них наше
            {
                hid.Connect(i);
 
                // GetConnectedDeviceName() возвращает string,
                // где через пробел указаны vendor и product Name.
                // Сравниваем, если совпало - значить устройство наше
                if (hid.GetConnectedDeviceName() == msclr::interop::marshal_as< std::string >(exampleDeviceName))
                {
                    res = 1;
                    break;
                }
            }
            return res;
        }
 
    
        //  добавляем на форму три CheckBox-а и две обычных кнопки:
    private: System::Windows::Forms::CheckBox^  checkBox1;
 
    private: System::Windows::Forms::CheckBox^  checkBox2;
    private: System::Windows::Forms::CheckBox^  checkBox3;
    private: System::Windows::Forms::Button^  button1;
    private: System::Windows::Forms::Button^  button2;
 
 
        private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)
        {
            if (1 == connect())
            {
                hid.ReceiveData(&pdata);           // Читаем данные с устройства
 
                checkBox1->Checked = (bool)pdata.b1;
                checkBox2->Checked = (bool)pdata.b2;
                checkBox3->Checked = (bool)pdata.b3;
            }
            else
            {
                String^ s = "";
                s += vendorName;
                s += " ";
                s += productName;
                s += " не подключено.";
                MessageBox::Show(s);
            }
        }
    private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e)
    {
        if (1 == connect())
        {
            pdata.b1 = (int)checkBox1->Checked;
            pdata.b2 = (int)checkBox2->Checked;
            pdata.b3 = (int)checkBox3->Checked;
            hid.SendData(&pdata);           // Отправляем данные устройству
        }
        else
        {
            String^ s = "";
            s += vendorName;
            s += " ";
            s += productName;
            s += " не подключено.";
            MessageBox::Show(s);
        }
    }
};
}
1
6 / 6 / 0
Регистрация: 31.05.2015
Сообщений: 59
05.09.2015, 17:25
сам столкнулся когда то с подобной проблемой.
Пытался так же переписать данный проект под vs CLI form-Задача абсолютно бестолковая, потому что билдер от визуал форм С++ отличается КАРДИНАЛЬНО и куда проще найти и переписать что то подобное под форм из других проектов.
Сам взял проект от микрочип. Но к сожалению в том проекте для обмена с юсб используются пакеты типа In/OUT, а нам для данного проекта нужны функции для работы с репортами типа феатуре.
В проекте вызваны данные функции из хид длл
данные отправки получения от устройства в массивах OUTBuffer[65] и INBuffer[65] Только нулевой элемент массива по моему под данные нельзя. Проект под VSC++ 10 , но ради интереса только что собрал под 2013, с первого раза не собралось-потребовалось очистить проект.
размер архива 8 метров
Вложения
Тип файла: zip HID_USB_VS10_C++.zip (8.28 Мб, 41 просмотров)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.09.2015, 17:25
Помогаю со студенческими работами здесь

Переделать код из C# в C++/CLI
кто знает как эту часть переделать в с++ private void Form1_Load(object sender, EventArgs e) { ...

Линейный код в классы C++\CLI
Уважаемые форумчане, прошу помощи в решении следующего вопроса. Имеется законченный код, который хочется преобразовать в классы на...

Перенести код из C++ Builder 5 в C++ Builder 2009
Здравствуйте! Назрела проблема, может быть поможете. СУть в следующем - сделал прогу на 5-ом Билдере, приношу преподу показывать, а там...

Исходный код C++ Builder 6 в С++ Builder 5
Всем добрый вечер, ребята подскажите пожалуйста может кто сталкивался когда нужно исходник из 6 версии Builder'a описать в исходном коде 5...

Перенести код из VC++ в CPP Builder (код использует DLL)
Такая проблема. Есть DLL + пример её использования на Visual C++, пытаюсь этот пример перенести в Builder. Проблемы возникают в самом...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 19.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru