Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Ralph
0 / 0 / 0
Регистрация: 06.10.2010
Сообщений: 6
#1

undefined reference... - C++

06.10.2010, 10:07. Просмотров 1394. Ответов 5
Метки нет (Все метки)

Добрый день.На C перешел совсем недавно,поэтому могу не знать всех тонкостей.Подскажите,в какую сторону копать для исправления следующей проблемы.
Вне всех функций объявляю struct shmemory {int max;}
Внутри функции main :
extern shmemory *memory;
...
memory=mmap(...);
При запуске gcc выдает кучу undefined reference memory во временных .o-файлах.когда же намеренно ввожу ошибку типа memory.may=,то выдает ошибки как и раньше-в файле index.c ,a не во временных .o
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2010, 10:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос undefined reference... (C++):

Странная ошибка: [Linker error] undefined reference to `__dyn_tls_init_callback' [Linker error] undefined reference to ld returned 1 exit status - C++
Здравствуйте. Вот недавно начал изучать книгу "С++ для чайников" Стефан Р. Девис 4-е издание. И напоролся на кучу ошибок) Но смог все...

undefined reference - C++
Пытаюсь разобраться с Box2D. Выпадает куча ошибок типа undefined reference to `b2World::b2World(b2Vec2 const&)'| Box2D.h файл...

Undefined reference to - C++
Есть класс NavyPort. Его заголовок: #ifndef NAVYPORT_H #define NAVYPORT_H class NavyPort { public: NavyPort(bool...

undefined reference to `A::a' - C++
//==========================================================================================================================================...

Undefined reference to - C++
Matrix.h #pragma once #include <iostream> template <typename T> class Matrix { private: int n1, n2; T **mas; public:...

undefined reference - C++
Доброго времени суток! Есть следующий код: #include <iostream> using namespace std; enum direction {Up, Down, Left, Right}; ...

5
easybudda
Модератор
Эксперт CЭксперт С++
9695 / 5645 / 963
Регистрация: 25.07.2009
Сообщений: 10,848
06.10.2010, 11:38 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C
1
struct shmemory {int max;};
это во-первых,
во-вторых:
Цитата Сообщение от Ralph Посмотреть сообщение
Внутри функции main :
C
1
struct shmemory *memory;
в-третьих:
C
1
memory = malloc(sizeof(struct shmemory));
если не знаете действительно веской причины mmap() использовать...
Да и вообще - лучше выкладывайте весь код с описанием того, что он делать должен.
0
Ralph
0 / 0 / 0
Регистрация: 06.10.2010
Сообщений: 6
06.10.2010, 13:34  [ТС] #3
Код
struct shmemory

{

pid_t command_pid;
pid_t master_pid;

int max_child;

char intertext[1024];

};

...

int main (int argc,char **argv)

{

...

/* создаем область shared memory */

extern struct shmemory *memory;

a=shm_open("/mmv",O_RDWR | O_CREAT,0666);

if (a<1) {ceLog("cannot create shared memory segment",'c');exit(1);}

ftruncate(a,sizeof(struct shmemory));

memory=mmap(NULL,sizeof(struct shmemory),PROT_READ | PROT_WRITE,MAP_SHARED,a,0); /* строка номер 115*/

if (memory==MAP_FAILED) {ceLog("mmap error",'c');exit(1);}

close(a);

memory->command_pid=getpid();
Выдает:

/var/tmp//cc9hipXq.o(.text 0xb89):/usr/local/mm/index.c:115: undefined reference to 'memory'
0
easybudda
Модератор
Эксперт CЭксперт С++
9695 / 5645 / 963
Регистрация: 25.07.2009
Сообщений: 10,848
06.10.2010, 18:43 #4
Цитата Сообщение от Ralph Посмотреть сообщение
extern struct shmemory *memory;
extern уберите.
Цитата Сообщение от Ralph Посмотреть сообщение
close(a);
закрытие файла само по себе munmap() не вызывает - какая-то у Вас неблагонадёжная конструкция получается...
1
Ralph
0 / 0 / 0
Регистрация: 06.10.2010
Сообщений: 6
06.10.2010, 20:18  [ТС] #5
Черт,дело действительно было в extern'e
Кстати,верно ли,что при fork'e эта разделяемая память будет наследоваться ?
А вот насчет munmap не совсем понял вас:зачем же мне закрывать память,если я ею еще не пользовался,или вы имели в виду ее использование в случае ошибки ?
0
accept
4825 / 3246 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
07.10.2010, 07:07 #6
extern ты применяешь, если у тебя имя memory определено в другом файле .c (в глобальной области)
0
07.10.2010, 07:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.10.2010, 07:07
Привет! Вот еще темы с ответами:

Undefined reference to - C++
Помогите, пожалуйста. Нужно было написать программу с использованием шаблона. Появляется ошибка &quot;undefined reference to...

Undefined reference to - C++
Много уже тем создано по даннму вопросу, но решения так и не нашел.. Есть конечно догадки, но как реализовать все равно не знаю. Прошу...

undefined reference to - C++
http://www.cyberforum.ru/qt/thread861722.html Не в том разделе создал тему, и поэтому даю линк на неё. Описание ошибки там же

Ошибка `undefined reference to` - C++
Выскакивает вот такая вот ошибка: undefined reference to ?Подскажите, пожалуйста, как это исправить? И еще рядом с file.h находится...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru