Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
125 / 123 / 0
Регистрация: 30.03.2009
Сообщений: 766

с++ embedded - линковка без стандартных библиотек

10.01.2010, 19:23. Показов 1782. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
с++ такой с++. следующий код (воспринимайте как теоретическое исследование))
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
#include <windows.h>
class class1
{
public:
    ~class1()
    {
        WriteConsoleA(GetStdHandle(STD_OUTPUT_HANDLE),"fr00\n",5,0,0);
    }
};
 
int main()
{
    class1 u();
    class1 *p = new class1 [10];
    /*for (int i = 0; i<5; i++)
        p[i]='0'+i;*/
    delete  p;
    return 0;
 
}
void __cdecl operator delete(void *p)
{
    //char c [] = "free\n";
    WriteConsoleA(GetStdHandle(STD_OUTPUT_HANDLE),"free\n",5,0,0);
    //WriteConsoleA(GetStdHandle(STD_OUTPUT_HANDLE),p,5,0,0);
    HeapFree(GetProcessHeap(),0,p);
}
void * __cdecl operator new(unsigned size)
{
    return HeapAlloc(GetProcessHeap(),0,size);
}
отказывается линковаться с ошибкой
Code
1
Error   2   error LNK2019: unresolved external symbol "void __stdcall `eh vector destructor iterator'(void *,unsigned int,int,void (__thiscall*)(void *))" (??_M@YGXPAXIHP6EX0@Z@Z) referenced in function "public: void * __thiscall class1::`vector deleting destructor'(unsigned int)" (??_Eclass1@@QAEPAXI@Z)   99.obj  99
и как мне теперь объявить метод с таким именем?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.01.2010, 19:23
Ответы с готовыми решениями:

Статическая линковка OCCI библиотек под CentOS без зависимостей
Добрый день, Я использую Oracle Client, скаченный с сайта Oracle и мне нужно выполнить статическую линковку С++ программы,...

Строка без использования стандартных библиотек
У меня задание ввести размер строки и саму строчку с консоли на используя string И удалить из последовательности латинские буквы Через...

Сериализация без стандартных библиотек/средств сериализации
Вечер добрый, форумчане! Вопрос изложен в заголовке темы: &quot;Сериализация без стандартных библиотек/средств сериализации&quot;. Вернее,...

5
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
10.01.2010, 19:46
При написании кода на Си++ надо при линковке подцеплять библиотеки run-time поддержки компилятора (в которых реализованы такие конструкции Си++ как new, throw и т.д.). Большинство подобных конструкций так или иначе реализовываются через стандартные библиотечные функции (malloc, setjmp). Поэтому написание кода на Си++, который будет не завязан на библиотеки - по большому счёту это программирование на Си с небольшими синтаксическими возможностями Си++. Конкретно твой код без библиотек работать не будет, т.к. использует new/delete

Добавлено через 1 минуту
Хотя у тебя есть собственные перегруженные new и delete. Правда хз, что там нагородит компилятор. В любом случае попробуй написать код без этого (а ещё лучше - на Си)

Добавлено через 1 минуту
Прочитал внимательно выдачу ошибки линковщика. У тебя переопределён не delete, а delete[]. Возможно, проблема растёт отсюда
0
125 / 123 / 0
Регистрация: 30.03.2009
Сообщений: 766
10.01.2010, 20:20  [ТС]
да это все понятно, что надо подцеплять runtime библиотеки. я говорю о том случае, когда так сделать нельзя - программирование в ядре, например

Добавлено через 2 минуты
delete [] и delete - это один и тот же оператор на уровне управления памятью. собственно я это как раз и проверял. типа, что будет, если писать вместо delete [] - delete.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
10.01.2010, 22:55
Цитата Сообщение от Lolcht0 Посмотреть сообщение
да это все понятно, что надо подцеплять runtime библиотеки. я говорю о том случае, когда так сделать нельзя - программирование в ядре, например
Ядро пишут на Си, поскольку в языке Си (в отличие от Си++) нет конструкций, требующих поддержки от системной библиотеки

Цитата Сообщение от Lolcht0 Посмотреть сообщение
delete [] и delete - это один и тот же оператор на уровне управления памятью. собственно я это как раз и проверял. типа, что будет, если писать вместо delete [] - delete.
Просто линкер выругался на том, что в delete[] есть вызов несуществующей функции. Попробуй отключить поддержку exception'ов, ибо несуществующая функция связана с проводкой exception'ов. А лучше пиши такие вещи на Си, а то на Си++ постоянно спотыкаться будешь
1
125 / 123 / 0
Регистрация: 30.03.2009
Сообщений: 766
11.01.2010, 00:22  [ТС]
помогло. только как удалось узнать, что оно завязано на exception-ах?
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
11.01.2010, 09:36
unresolved external symbol "void __stdcall `eh vector destructor

Сокращение "eh" означает "exception handling"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.01.2010, 09:36
Помогаю со студенческими работами здесь

Статическая линковка библиотек
Блин, ну почему простенькая программа &quot;hello world&quot; (на русском языке) требует библиотеку libstdc++-6.dll ? Если же её прилинковать...

Линковка библиотек в VS C++2010
Где то в параметрах проекта можно производить линковку библиотек к проекту. Кто нибудь знает где это искать., пролазил все настройки не...

Линковка библиотек в проекте
Доброго времени суток. Помогите разобраться 5 дней как пытаюсь собрать код, не получается выдает ошибки и вроде все файлы и библиотеки...

Правильная линковка библиотек
Долго искал в интернете, ничего толкового не нашёл, решил спросить тут. После создания приложения компилятор прицепляет файл статически,...

Линковка библиотек DirectX SDK
Добрый день, знатоки. У меня проблема с линковкой, поиск юзал, но советы из других тем не помогли. В общем, установил я Microsoft DirectX...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru