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

После возвращении вектор пуст, хотя в 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
7377 / 4454 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
24.07.2014, 23:46
Цитата Сообщение от Vardanito Посмотреть сообщение
есть структура хочу из длл получить массив таких структур
C++
1
2
3
4
5
6
7
8
9
10
extern "C" MyStruct * createMyStructs(size_t * size);
extern "C" void freeMyStructs(MyStruct * structs);
//.................
 
size_t size;
MyStruct * array = createMyStructs(&size);
 
//..........
 
freeMyStructs(array);
А вообще, это зависит от задачи. Иногда можно вообще ничего не возвращать, а сделать заполнение какого-либо контейнера через callback-функтор.
Или все-таки можно использовать вектор, но для этого должны быть особые условия. Одинаковый компилятор (вплоть до версии), одинаковый С++ runtime на обеих сторонах (exe и dll) в количестве одной штуки на всех. Вектор передавать по ссылке. Но, вообще, обычно так не делают. Непереносимо и очень легко поломать все.
Есть простое правило, ресурс должен быть освобожден на той же стороне, на которой был выделен. Т.е. если ты массив создал в dll, то и разрушать его должен там же. Если его придерживаться, то большинство проблем можно будет избежать.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.