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

После возвращении вектор пуст, хотя в dll size другая информация - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Переделать строчный калькулятор через ООП http://www.cyberforum.ru/cpp-beginners/thread1233419.html
Друзья, имею отличный строчный калькулятор, сделанный через процедурное программирование. #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <conio.h> //#include <string> using...
C++ Смещение в файле более 4 Gb Всем привет. Есть необходимость хранить смещение на данные в файле(памяти), который более 4 Gb. Задача тривиальна. Нужно использовать c++99. Единственное что приходит в голову, это хранить смещение в... http://www.cyberforum.ru/cpp-beginners/thread1233407.html
Метод половинного деления для функции от двух переменных C++
Это программа для функции от одной переменной, а можно этот же метод использовать для функции от двух переменных, например? #include <iostream> #include <cmath> using namespace std; const...
C++ Является ли правильным проектирование классов с методами у которых есть определённый порядок вызова
Всем привет. Вопрос к опытным программистам: Является ли в С++ практике правильным проектирование классов с методами у которых есть определённый порядок вызова и однократность в использовании?...
C++ В каких случаях нужно создавать динамические переменные, а в каких статические? http://www.cyberforum.ru/cpp-beginners/thread1233388.html
такой же вопрос и по массивам ! Объясните пожалуйста !
C++ Задача моделирования и управление движением Суть в том что, клетка находится изначально в любой клетке(например в верхней) и пользователь должен управлять ей (как я понял пользователь сначала выбирает направление по часовой или против, потом... подробнее

Показать сообщение отдельно
DrOffset
7351 / 4451 / 1009
Регистрация: 30.01.2014
Сообщений: 7,292
25.07.2014, 00:12
Цитата Сообщение от Vardanito Посмотреть сообщение
у меня так exe создает вектор из структур функцию длл
Опасный код. Может он и будет работать при определенных условиях, но в реальных задачах лучше все-таки так не делать.
Иногда можно сделать так, но это скорее универсальный вариант, чем лучший, но он безопасен при соблюдении правила, которое я выше описал (в данном случае на стороне dll должен быть освобожден c_handler):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// эту функцию мы экспортируем
extern "C" __declspec(dllexport)
void DLLHandlers(IHost* core_obj, int * a, void * container, void(*hFuncAdd)(void *, HandlerGetArgument const *))
{
    *a = 5;
    for(int i = 0; i < 5; ++i) // ну например 5 элементов
    {
        HandlerGetArgument arg;
 
        arg.c_handler = new showcategoryhandler((*core_obj->GetCore()));
        arg.name      = "fastshow";
 
        hFuncAdd(container, &arg);
    }
}
 
// это функция только в h-файле dll, ее мы и будем вызывать на стороне exe
inline
void DLLHandlersVec(IHost* core_obj, int & a, std::vector<HandlerGetArgument> & vec)
{
    struct Functor
    {
        static void push_back(void * c, HandlerGetArgument const * arg)
        {
            static_cast<std::vector<HandlerGetArgument>*>(c)->push_back(*arg);
        }
    };
    DLLHandlers(core_obj, &a, &vec, &Functor::push_back);
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru