Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Вызов struct из dll


Автор: Rutti 25.4.2006, 16:23
У меня в dll лежит функция, которая в своей работе использует вектор имеющий в качестве типа структуру, находящуюся в той  же dll.
В процессе работы надо программы надо получить данные из этого вектора. Как - не знаю. Видимо, надо сделать и вектор и структуру экспортируемыми из dll? Как? 

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

Автор: Rutti 27.4.2006, 10:33
Darhazer

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

Но всё таки можно что-нибудь в качестве наглядности (пример)? 

Автор: threef 27.4.2006, 11:08
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';
}

 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)