реклама на сайте
подробности

 
 
> Linker не находит memmove, free, malloc ...
tobias_ivan
сообщение Jun 21 2006, 07:57
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 150
Регистрация: 7-09-05
Из: Россия, г.Новороссийск
Пользователь №: 8 321



В проекте в закладке Library Configuration устанавливаю значение Library равным Full DLIB, для того чтобы использовать Extended Embedded C++. При этом при линковке проекта получаю сообщение:
Error[e46]: Undefined external "malloc(size_t)" referred in main ( D:\Tobias\testiar\Debug\Obj\main.r90 )
Error[e46]: Undefined external "free(void *)" referred in main ( D:\Tobias\testiar\Debug\Obj\main.r90 )

Вот текст тестового примера:
#include <stdlib.h>
int main()
{
char *temp;
temp = (char *)malloc(512);
temp[2] = 56;
free(temp);
return 0;
}

Как быть?
Заранее всем спасибо.

ЗЫ. Реальный проект содержит "навороты" под Extended Embedded C++ и при этом используются memmove(), free() и про
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
IgorKossak
сообщение Jun 21 2006, 16:11
Сообщение #2


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Могу предположить, что tobias_ivan не в IDE работает.
А то действительно всё бы автоматом получалось.
Go to the top of the page
 
+Quote Post
tobias_ivan
сообщение Jun 22 2006, 10:19
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 150
Регистрация: 7-09-05
Из: Россия, г.Новороссийск
Пользователь №: 8 321



Цитата(IgorKossak @ Jun 21 2006, 20:11) *
Могу предположить, что tobias_ivan не в IDE работает.
А то действительно всё бы автоматом получалось.


Работаю в IAR EWAVR IDE версия 4.12а.
Пока писал отмазку, понял в чем дело. biggrin.gif

Наверное читали мою тему IAR + Win2000. В процессе поиска возможной проблемы пробовали раличные варианты, в том числе и сборку из командной строки (предложенной кстати буржуями). При этом заметили, что проект собирался, если из команды исключить ключ -I. Это сработало для проектов без заголовочных файлов. Затем оставили только опцию -I $TOOLKIT_DIR$\INC\, и проект собрался. А вот с опцией -I $TOOLKIT_DIR$\INC\CLIB ну не хотел... Тогда скопировали файлы из CLIB в INC и проект собрался из командной строки. Скопировали и забыли...
Так в директории $TOOLKIT_DIR$\INC\ оказался С-шный stdlib.h.
В проекте директориями по умолчанию для поиска заголовочных файлов установлены (важен порядок):
$TOOLKIT_DIR$\INC\
$TOOLKIT_DIR$\INC\DLIB\
Т.е. компилятор смотрит в $TOOLKIT_DIR$\INC\ находит там stdlib.h и собирает проект. А линкер выдает ошибку из-за рассмотренных в этой ветке выше причин. smile.gif

Вот так вот, горе от ума... cranky.gif

Сообщение отредактировал tobias_ivan - Jun 22 2006, 10:21
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 22:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01368 секунд с 7
ELECTRONIX ©2004-2016