Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вызов struct из dll 
:(
    Опции темы
Rutti
Дата 25.4.2006, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 225
Регистрация: 25.7.2004

Репутация: нет
Всего: нет



У меня в dll лежит функция, которая в своей работе использует вектор имеющий в качестве типа структуру, находящуюся в той  же dll.
В процессе работы надо программы надо получить данные из этого вектора. Как - не знаю. Видимо, надо сделать и вектор и структуру экспортируемыми из dll? Как? 
PM MAIL   Вверх
Darhazer
Дата 25.4.2006, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 28.9.2005
Где: HellCity (Sofia, Bulgaria)

Репутация: 2
Всего: 29



Нужно только добавить дефиницию структуре в .exe. А потом експортируеш функцию, которая возвращяет скруктуру. Правдо, обично я возвращаю указатель на обекте, но и просто обект должен работать. Условие - у .exe и у .dll одинаковая дефиниция структури / одинаковий .h/ 
Также структуру можно передать как параметер. Обекта нельзя - обект нужно в структуру превратить (сериализация / десериализация)
Удачи! 


--------------------
I'm a wheel, I'm a wheel, I can roll, I can feel
But you can't stop me turning
'Cause I'm the sun, I'm the sun, I can move, I can run
But you'll never stom me burning
PM MAIL WWW ICQ YIM   Вверх
Rutti
Дата 27.4.2006, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 225
Регистрация: 25.7.2004

Репутация: нет
Всего: нет



Darhazer

Большое спасибо! Здорово написано. ;)

Но всё таки можно что-нибудь в качестве наглядности (пример)? 
PM MAIL   Вверх
threef
Дата 27.4.2006, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 27.10.2005
Где: Запорожье

Репутация: 9
Всего: 10



dllclass.h:
Код

#ifdef _FOREXPORT
#define API__ __declspec(dllexport)
#else
#define API__ __declspec(dllimport)
#endif

class API__ A{
    int x;
public:
    int y;
A::A();
A::A(int x);
A::~A();
int& A::getx();
};

dllclass.cpp
Код

#define _FOREXPORT
#include "dllclass.h"
A::A():x(0){}
A::A(int x):x(x){}
A::~A(){x=-1;}
int& A::getx()
{
        return x;
}


импортер:
Код

#include <iostream.h>
#include "..\dllclass.h"
main()
{
    A b,c(10);
    cout<<b.getx()<<'\n'<<c.getx()<<'\n';
    b.getx()=c.getx();
    cout<<b.getx()<<'\n'<<c.getx()<<'\n';
}

 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0460 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.