powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / char в char*
8 сообщений из 8, страница 1 из 1
char в char*
    #32798420
surkalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Есть такая проблема, я сделал dll для Oracle на C. Вопрос вот такой, внутри dll я получаю некую структуру, где все ее составлющие представлены типа char, а выходные параметры представлены идут как char*, я делаю след образом:

par1 = &(MyStruct.par1);

но в Оракл вдается полная лабуда, как быть? как char передать через char*
...
Рейтинг: 0 / 0
char в char*
    #32798444
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример (краткий) в студию...
...
Рейтинг: 0 / 0
char в char*
    #32798509
surkalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В смысле краткий???
структура:
typedef struct
{
char par1;
char par2;
} tstruct;

моя функция в dll

long __declspec(dllexport) MyFunc( void *p_ctx,
char* par1,
short par1_len
)
{
tstruct MyStruct;
FillStruct(&MyStruct) ;
par1 = &(MyStruct.par1);
}

вот полный пример.
и в PL\SQL Developer, после выполнения external procedure , возвращается в par1 какая то лабуда.
...
Рейтинг: 0 / 0
char в char*
    #32798534
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MyStruct в вашем случае локальная переменная и на что будет указывать par1
после выхода её(MyStruct) из области видимости-- одному богу известно :)
Если par1 указывает на уже распределённую память до вызова MyFunc то лучше скопировать содержимое памяти MyStruct.par1 в память указываемую par1.
Вот как-то так :)
Удачи
...
Рейтинг: 0 / 0
char в char*
    #32798548
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zalexakaЕсли par1 указывает на уже распределённую память до вызова MyFunc
если нет то распределять память самому(правда возникает вопрос - кто будет освобождать)
глобальный буфер в данном случае(многопоточность) неприменим
...
Рейтинг: 0 / 0
char в char*
    #32798550
surkalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пробовал и так

strcpy(par1, &(MyStruct.par1));

всеравно тоже самое. :(
...
Рейтинг: 0 / 0
char в char*
    #32798636
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
surkalexно в Оракл вдается полная лабуда, как быть? как char передать через char*
В Oracle Application Developer's Guide этот вопрос рассмотрен довольно подробно. Суть - память надо выделять через функцию OCI, возвращающую память из контекста сессии.

Подробно прокомментированные примеры, если не изменяет память, есть в книге Кайта.
...
Рейтинг: 0 / 0
char в char*
    #32806473
Man555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а какой компилятор? если пишешь на чистом C тогда простительно, если на С++, то используй stl::basic_string, и будет тебе счастье.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / char в char*
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]