Форум программистов, компьютерный форум 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 namespace std;
C++ Смещение в файле более 4 Gb Всем привет. Есть необходимость хранить смещение на данные в файле(памяти), который более 4 Gb. Задача тривиальна. Нужно использовать c++99. Единственное что приходит в голову, это хранить смещение в виде структуры (fourGbOffsetsNumber, simple1byteOffset). Не подскажите как выйти из положения? http://www.cyberforum.ru/cpp-beginners/thread1233407.html
Метод половинного деления для функции от двух переменных C++
Это программа для функции от одной переменной, а можно этот же метод использовать для функции от двух переменных, например? #include <iostream> #include <cmath> using namespace std; const double epsilon = 1e-2; double f(double x) { return 4- exp(x) - 2*x^2;
C++ Является ли правильным проектирование классов с методами у которых есть определённый порядок вызова
Всем привет. Вопрос к опытным программистам: Является ли в С++ практике правильным проектирование классов с методами у которых есть определённый порядок вызова и однократность в использовании? Примеры: 1) класс соединения с методом Open() который можно вызвать один раз 2) класс с методом SendQuery() который можно выполнить только один раз так как в нём происходит выделение памяти 3) класс с...
C++ В каких случаях нужно создавать динамические переменные, а в каких статические? http://www.cyberforum.ru/cpp-beginners/thread1233388.html
такой же вопрос и по массивам ! Объясните пожалуйста !
C++ Задача моделирования и управление движением Суть в том что, клетка находится изначально в любой клетке(например в верхней) и пользователь должен управлять ей (как я понял пользователь сначала выбирает направление по часовой или против, потом продолжать двигаться по кругу или свернуть). На каком ЯП будет написано не важно. Спасибо что помогли. подробнее

Показать сообщение отдельно
DrOffset
7094 / 4235 / 950
Регистрация: 30.01.2014
Сообщений: 7,010
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);
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru