Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
3 / 3 / 0
Регистрация: 02.01.2011
Сообщений: 149

Изменение размера массива на Visual C++, полученного из VB

28.03.2011, 19:17. Показов 1505. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет.
Хочу написать DLL-ку на VC++, что бы в ней изменялся размер массива, переданный туда как параметр из VB, с помощью API.
Private Declare Function ChangeArraySize (VBArray() As Long) as Long
Естественно, это упрощенный пример, но если будет понятно как это делать на этом примере, то думаю разберемся и с более сложными
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.03.2011, 19:17
Ответы с готовыми решениями:

Дан целочисленный массив размера N. Удалить из массива все нечетные числа и вывести размер полученного массива и его сод
Дан целочисленный массив размера N. Удалить из массива все нечетные числа и вывести размер полученного массива и его содержимое. ...

Существует ли тип исключения, который выбрасывается при несоответствии размера полученного массива
Добрый день! Существует ли тип исключения который выбрасывается при несоответствии размера полученного массива? Вот пример: void...

Изменение размера массива
У меня массив типа Object. Пишу так Array.Resize(ref mas, mas.Length + 2); выдает следующую ошибку "The type arguments for method...

8
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,930
Записей в блоге: 5
28.03.2011, 23:53
У меня заработал такой пример: Увеличиваем массив на 1, суммируем элементы старого массива (они сохраняются в новом), результат кладем в последний элемент массива
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#define EXPORT extern 'C' __declspec (dllexport)
#include <windows.h>
#include <oleauto.h>
 
EXPORT int __stdcall GetPictureFromBMP (VARIANT *v)
{
    int i;
    int l;
    void * p;
    SAFEARRAYBOUND sab;
    sab.cElements = 5;
    sab.lLbound = 0;
    SafeArrayRedim(v->parray, &sab);
    SafeArrayAccessData (v->parray, &p);
    l = 0;
    for(i=0; i<4; i++)
    l += ((int*)p)[i];
    ((int*)p)[4] = l;
    SafeArrayUnaccessData(v->parray);
    return l;
}
Проверяем из бейсика:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Declare Function GetPictureFromBMP _
Lib 'D:CaaadddddReleaseddddd.dll' _
Alias '_GetPictureFromBMP@4' (Plt As Variant) As Long
 
Dim p As Variant
 
Private Sub Command1_Click()
ReDim p(3) As Long
p(0) = 1
p(1) = 2
p(2) = 3
p(3) = 4
ret = GetPictureFromBMP(p)
MsgBox UBound(p)
MsgBox p(4)
End Sub
Читать статью http://www.rsdn.ru/article/com/varsafearr.xml
0
3 / 3 / 0
Регистрация: 02.01.2011
Сообщений: 149
30.03.2011, 00:08  [ТС]
Спасибо. Только я добавляю эти строки себе в код, но при попытке компиляции, он мне пишет:
--------------------Configuration: CBL - Win32 Debug--------------------
Compiling...
1sf.cpp
crogram filesmicrosoft visual studiovc98includeoleauto.h(30) : error C2146: syntax error : missing '' before identifier 'IID_StdOle'
crogram filesmicrosoft visual studiovc98includeoleauto.h(30) : fatal error C1004: unexpected end of file found
Error executing cl.exe.

CBL.dll - 2 error(s), 0 warning(s)

Непонимаю в чем ошибка.
Если я переставляю местами эти Include с другими, то к-во ошибок может увеличиваться до 5-ти.
Общий вид у меня выглядит так:
#define EXPORT extern 'C' __declspec (dllexport)
#define MsgBox(MESSAGE,CAPTION) MessageBox(0,MESSAGE,CAPTION,0)
#include <stdio.h>
#include <string.h>
#include <stdafx.h>
#include <stdlib.h>
#include <wingdi.h>
#include <windows.h>
#include <oleauto.h>
#pragma pack(1)
0
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,930
Записей в блоге: 5
30.03.2011, 00:39
У меня были подобные ошибки, когда у меня стоял одинокий oleauto.h Когда я добавил впереди windows.h, ошибка исчезла. Может быть все инклуды начать с

#include <windows.h>
#include <oleauto.h>

Скопировать начало, как у меня. Если будет ошибка, то значит у нас разные настройки проекта. Я создавал dll - пустой проект.

А мой код у вас работает?
0
3 / 3 / 0
Регистрация: 02.01.2011
Сообщений: 149
30.03.2011, 01:19  [ТС]
Скопировал Ваш код. Dynamic Link Library --> Empty project
При компиляции:
--------------------Configuration: test3 - Win32 Debug--------------------
Compiling...
sf.cpp
C:MyProj est3sf.cpp(5) : error C2537: '' : illegal linkage specification
C:MyProj est3sf.cpp(5) : error C2143: syntax error : missing '' before 'string'
C:MyProj est3sf.cpp(5) : fatal error C1004: unexpected end of file found
Error executing cl.exe.

test3.dll - 3 error(s), 0 warning(s)
0
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,930
Записей в блоге: 5
30.03.2011, 01:29
Че-то у меня даже слова такого нет 'string' в 5-й строке.
Странно.
0
3 / 3 / 0
Регистрация: 02.01.2011
Сообщений: 149
30.03.2011, 18:32  [ТС]
Тогда, если не сложно, пришли мне плизз свой oleauto.h
0
3 / 3 / 0
Регистрация: 02.01.2011
Сообщений: 149
30.03.2011, 18:32  [ТС]
Тогда, если не сложно, пришли мне плизз свой oleauto.h на iustascom@narod.ru
0
3 / 3 / 0
Регистрация: 02.01.2011
Сообщений: 149
30.03.2011, 18:41  [ТС]
Великие извинения.
Ничего присылать мне не надо. Это ошибка наверное при отсылки из Web-формы. EXPORT и две кавычки #define EXPORT extern ''C'' __declspec (dllexport)
Незнаю сколько кавычек увидешь ты.
Вроде нормально компилируется, а работу с VB я не проверял.
Еще вопрос: это только с типом VARIANT, или можно ставить любой другой ???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.03.2011, 18:41
Помогаю со студенческими работами здесь

Изменение размера массива
Подскажите плиз, как на С++ изменить размер массива, есть например int *pi = new int; А нужно увеличить +1 элемент, не потеряв...

Изменение размера массива
Добрый день, уважаемые программисты! Я столкнулся с такой проблемой: у меня есть массив target2(GameObject) и каждый кадр когда некоторая...

Изменение размера массива
У меня есть структура, в которой используйтся массив другой структуры: #pragma pack(1) struct BGR2 { BYTE B,G,R; }; struct SFP1 {...

Изменение размера массива
Мне понадобилось еще раз использовать эту операцию: char ddd = richTextBox1.Lines.ToCharArray(); Как заново объявить массив или удалить...

Изменение размера массива
Написать программу, которая формирует числовое множество X с помощью указанного характеристического предиката или порождающей процедуры и...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru