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

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

Войти
Регистрация
Восстановить пароль
 
Destr6790
0 / 0 / 0
Регистрация: 24.05.2016
Сообщений: 4
#1

Использование vector в dll - C++

24.05.2016, 10:07. Просмотров 154. Ответов 6
Метки нет (Все метки)

У меня есть такой вопрос. Допустим у нас в dll есть структура, vector состоит из набора этих структур. Есть функция которая возвращает vector . Как правильно обратиться к этому вектору в реализации dll на VS? В результате нужно получить данные из структур.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2016, 10:07
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Использование vector в dll (C++):

Использование vector - C++
Здравствуйте. У меня есть два класса,в каждом находится по вектору vector<AbstractObject*>m_BulletVector; ...

Использование <vector> - C++
Возник еще один вопрос по векторам: если описываешь класс для работы с вектором, надо ли в деструкторе удалять созданный вектор, и если да,...

использование vector и struct - C++
недавно пересел на С++, пытаюсь сделать программу, которую я делал на паскале struct elem { long Li; long Ri; }; int...

Использование vector<string> - C++
Задание: Задана строка S, содержащая не менее двух слов, и символ с. Составит новую строку S1 из слов строки S, в которых есть символ с,...

Вызов функции, использующей vector, из dll - C++
Всем привет! Проблема в следующем: есть dll-ка, в ней 3 простых функции: 1. Sum - сложение 2х целых чисел. 2. Concat - соединяет 2...

DLL не компилирует (использую vector, string, .lib) - C++
Здравствуйте, как скомпилировать dll библиотеку? Пишу __declspec(dllexport) в объявлении классов но получаю уйму ошибок. Проблема в том что...

6
Убежденный
Ушел с форума
Эксперт С++
15929 / 7239 / 1140
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
24.05.2016, 10:15 #2
Сделай в dll функцию, которая будет возвращать нужную структуру из вектора.
Дешево и сердито.
0
Destr6790
0 / 0 / 0
Регистрация: 24.05.2016
Сообщений: 4
24.05.2016, 10:34  [ТС] #3
Спасибо. Но у меня есть ещё один вопрос. Допустим мне нужно получить данный вектор, и чтобы я им мог пользоваться в реализации на VS?(без функций на получение данных структуры в dll)
Например,в vs чтобы получить функцию, которая возвращает тип int в VS
int(*sum1)(int, int);
(FARPROC &)sum1 = GetProcAddress(hDll1, "sum");
c = sum1(10, 50);
Как аналогичным способом получить вектор структур?
Или это нельзя сделать? Жду ваших советов. Заранее выражаю благодарность.
0
Убежденный
Ушел с форума
Эксперт С++
15929 / 7239 / 1140
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
24.05.2016, 11:00 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Как-то так:
C++
1
2
3
4
5
6
7
8
9
10
typedef std::vector<mystruct> (_stdcall * tGetVector)(int, int);
tGetVector Func = (tGetVector)GetProcAddress(hDll1, "GetVector");
if (!Func)
{
    // Обработка ошибки.
}
else
{
    std::vector<mystruct> Vector = Func(123, 456);
}
1
Destr6790
0 / 0 / 0
Регистрация: 24.05.2016
Сообщений: 4
24.05.2016, 11:09  [ТС] #5
Сейчас попробую. Ещё один вопрос. Саму структуру надо экспортировать из dll, чтобы пользоваться элементами вектора?(извиняюсь если это тривиальный вопрос)
0
Убежденный
Ушел с форума
Эксперт С++
15929 / 7239 / 1140
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
24.05.2016, 11:11 #6
Нет. Но клиентскому коду должно быть доступно объявление структуры,
иначе компилятор не будет знать, как с ней работать.
1
Destr6790
0 / 0 / 0
Регистрация: 24.05.2016
Сообщений: 4
24.05.2016, 11:17  [ТС] #7
Огромное спасибо за ответы.
0
24.05.2016, 11:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2016, 11:17
Привет! Вот еще темы с ответами:

Использование vector insert и своего типа данных - C++
Не понимаю почему вот здесь выскакивает странная ошибка: arr.insert(arr.begin(),(*max)); #include &lt;iostream&gt; #include &lt;iterator&gt; ...

Использование контейнера vector и перегрузка операций в классе - C++
есть вот такое задание: Создать класс, в классе должны быть наборы конструкторов (в том числе по умолчанию и копирования), деструктор,...

Vector ругается на использование классов E2397 и Invalid pointer operation - C++
Не получается использовать vector с собственными классами выдает либо Unit1.cpp(62): E2397 Template argument cannot have static or local...

error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Vector<int>::Vector<int>(void)" (?0?$Vector@H@@QAE@XZ) в функции _main - C++
//Vector.h #include &lt;iostream&gt; #include &lt;Windows.h&gt; #include &lt;climits&gt; #include &lt;vector&gt; #include &lt;stdlib.h&gt; #include &lt;fstream&gt;...


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

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

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