Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 03.01.2010
Сообщений: 182

Возвращение из dll функции указателя на динамический массив

31.01.2013, 22:15. Показов 1782. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть функция описанная в dll
C++
1
extern "c" void* _stdcall _import Func1(char*, int)
в нее посылается два параметра char * и int, а вернуть она должна динамический массив.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
typedef struct
{
......
}
Array1;
Array1* data1;
 
в dll пишу:
 
extern "c" void* _stdcall _export Func1(char*, int)
{
  data1  = new Array1[N];
// заполняю структуру
  return &data1;
}
а в модуле вызова:
C++
1
2
3
4
5
6
7
8
typedef struct
{
......
}
Array2;
Array2* data2;
 
data2 = (Array2 *)Func1(name,5)
Правильно ли я пишу, потому что при выполнении возникают ошибки.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.01.2013, 22:15
Ответы с готовыми решениями:

Возвращение указателя на массив символов char функцией определенной в dll
Доброго времени суток! Я пытаюсь разобраться как работает подключение динамических библиотек и работа с функциями, определенными в них в...

Вызов функции из DLL (C++) с передачей указателя на массив
Добрый день! Проблема следующая: нужно вызвать функцию из DLL (написана на c++). При этом в качестве параметров передаются указатели на...

Возвращение указателя из функции
Доброе время суток. Как привести указатель к типу Bitmap? Есть вот такая функция: void* draw_menu (void){ Graphics::TBitmap...

5
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
31.01.2013, 22:51
C++
1
2
3
4
5
6
7
8
9
Array1;
Array1* data1;
...
Array2;
Array2* data2;
...
data1
...
data2
- это что?

Есть хорошая традиция цитировать сбда текст ошибок.
0
0 / 0 / 0
Регистрация: 03.01.2010
Сообщений: 182
01.02.2013, 07:51  [ТС]
Текст программы выложить не смогу, попробую передать смысл:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// в  DLL:
typedef struct
{
     int n;
     float f;
}
Array1;
Array1* data1; 
 
extern "c" void* _stdcall _export Func1(char*, int)
{
  data1  = new Array1[N];
     for(i=0;i<N;i++)
     {
        data1[i].n = a;
        data1[i].f = b;
     }
  return &data1;
}
Обращение к функции в модуле:

C++
1
2
3
4
5
6
7
8
9
typedef struct
{
     int n;
     float f;
}
Array2;
Array2* data2;
 
data2 = (Array2 *)Func1(name,5)
ПРавильно ли я возвращаю указатель data1 ?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
01.02.2013, 08:00
Вы обещали тексты ошибок .
0
0 / 0 / 0
Регистрация: 03.01.2010
Сообщений: 182
01.02.2013, 08:04  [ТС]
Ошибки это "access violation" в большей части
0
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
01.02.2013, 08:22
Когда ответите на эти вопросы, решение должно прийти само собой
1. Где в вашем проекте предусмотрено освобождение памяти после new?
2. Какой смысл использовать тип данных, который надо описывать и в библиотеке и в проекте?
3. Почему функция, возвращающая указатель на массив определенного типа, описана как void* ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.02.2013, 08:22
Помогаю со студенческими работами здесь

Возвращение указателя из функции
Здравствуйте! Есть функция: char* dectobin(unsigned dec) { static char arr; int v = 128, i; for(i = 1; i &lt;= 8; i++) ...

Возвращение указателя на локальную переменную (массив)
Добрый день! Вопрос такой: Как правильно возвратить указатель на локальную переменную (или массив)? Программа ниже...

Возвращение функцией массива (или указателя на массив)
Вопрос опытным. Имеется массив картинок TImage, который создается одной функцией. Как вызвать этот же массив из другой функции? void...

Возвращение неконстантного указателя из константного указателя на строку
Не могу до конца понять один момент. Допустим, у нас есть функция searchSymbol, которая принимает два параметра: константный указатель на...

Передача в функцию указателя на динамический массив
Добрый день. Не могу понять одну вещь. Вот такой вот код работает. Создается массив из 10 элементов и указатель на него передается в...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru