Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.09.2010, 21:06   #1
nowaalex
Пользователь
 
Регистрация: 22.08.2010
Сообщений: 59
По умолчанию ld и классы

Имеется некий класс( 2 файла, class.h и class.cpp ).
В файле test.cpp содержание примерно такое:

Код:
#include <class.h>

Class Object;
Object.Method();
Нужно из файла test.cpp сделать динамическую библиотеку, чтобы она подключалась с помощью dlopen/dlsym. Пока на такой код ругается
Код:
undefined symbol: _ZN6ServerD1Ev
любые идеи приветствуются)
nowaalex вне форума Ответить с цитированием
Старый 02.09.2010, 21:30   #2
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

А что из неё экспортить нужно?
И полный код test.cpp пожалуйста.

Последний раз редактировалось Carbon; 02.09.2010 в 21:34.
Carbon вне форума Ответить с цитированием
Старый 02.09.2010, 21:36   #3
nowaalex
Пользователь
 
Регистрация: 22.08.2010
Сообщений: 59
По умолчанию

Код:
#include "class.h"
#include <string.h>
#include <stdio.h>
Server S;
extern "C" void me()
{
S.Method();
}
Нужно, чтобы из главного файла( то, к чему вышеперечисленное будет линковаться ) можно было вызвать ф-цию me
nowaalex вне форума Ответить с цитированием
Старый 02.09.2010, 21:53   #4
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Код:
#include "class.h"
#include <string.h>
#include <stdio.h>

extern "C" void me()
{
Server S;
S.Method();
}
а так?
Carbon вне форума Ответить с цитированием
Старый 02.09.2010, 21:56   #5
nowaalex
Пользователь
 
Регистрация: 22.08.2010
Сообщений: 59
По умолчанию

Так было бы ОЧЕНЬ нежелательно, тк функция me будет вызываться где-то раз в секунду а то и чаще, но всё же попробую и сообщу о результате
Так тоже не пашет(
Есть такая статья..но я там не очень понял

Последний раз редактировалось nowaalex; 02.09.2010 в 21:57. Причина: Попробовал)
nowaalex вне форума Ответить с цитированием
Старый 02.09.2010, 23:18   #6
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Код:
#include "class.h"

Class * object = NULL;

extern "C" void me()
{
if (object) object->Method();
}

__attribute__((constructor)) void load()
{
object = new Class();
}

__attribute__((destructor)) void unload()
{
if (object) delete object;
}
Carbon вне форума Ответить с цитированием
Старый 02.09.2010, 23:52   #7
nowaalex
Пользователь
 
Регистрация: 22.08.2010
Сообщений: 59
По умолчанию

А если в классе имеется кнструктор по умолчанию?
S( const char * c );?

Последний раз редактировалось nowaalex; 03.09.2010 в 00:01.
nowaalex вне форума Ответить с цитированием
Старый 03.09.2010, 00:58   #8
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Причём здесь конструктор?
Carbon вне форума Ответить с цитированием
Старый 03.09.2010, 17:14   #9
nowaalex
Пользователь
 
Регистрация: 22.08.2010
Сообщений: 59
По умолчанию

undefined symbol: _ZN6Server12sendEchoBuffEv
опять. Просто я думал, что елси в классе есть конструктор с аргументам, что надо что-то менять
nowaalex вне форума Ответить с цитированием
Старый 03.09.2010, 17:22   #10
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Код:
#include "class.h"

void * object = NULL;

extern "C" void me()
{
if (object) ((Class *)object)->Method();
}

__attribute__((constructor)) void load()
{
object = new Class();
}

__attribute__((destructor)) void unload()
{
if (object) delete (Class *)object;
}
Carbon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Классы Kukkk Компоненты Delphi 2 26.12.2009 13:00
СИ++ Классы mikl9 Помощь студентам 2 17.06.2009 21:49
классы Ferghost Помощь студентам 3 05.06.2009 03:20
Классы в С++ Wirz Помощь студентам 1 04.06.2009 23:22