|
|
|
char в char*
|
|||
|---|---|---|---|
|
#18+
Добрый день! Есть такая проблема, я сделал dll для Oracle на C. Вопрос вот такой, внутри dll я получаю некую структуру, где все ее составлющие представлены типа char, а выходные параметры представлены идут как char*, я делаю след образом: par1 = &(MyStruct.par1); но в Оракл вдается полная лабуда, как быть? как char передать через char* ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2004, 16:25 |
|
||
|
char в char*
|
|||
|---|---|---|---|
|
#18+
Пример (краткий) в студию... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2004, 16:34 |
|
||
|
char в char*
|
|||
|---|---|---|---|
|
#18+
В смысле краткий??? структура: 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 какая то лабуда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2004, 17:01 |
|
||
|
char в char*
|
|||
|---|---|---|---|
|
#18+
MyStruct в вашем случае локальная переменная и на что будет указывать par1 после выхода её(MyStruct) из области видимости-- одному богу известно :) Если par1 указывает на уже распределённую память до вызова MyFunc то лучше скопировать содержимое памяти MyStruct.par1 в память указываемую par1. Вот как-то так :) Удачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2004, 17:10 |
|
||
|
char в char*
|
|||
|---|---|---|---|
|
#18+
zalexakaЕсли par1 указывает на уже распределённую память до вызова MyFunc если нет то распределять память самому(правда возникает вопрос - кто будет освобождать) глобальный буфер в данном случае(многопоточность) неприменим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2004, 17:15 |
|
||
|
char в char*
|
|||
|---|---|---|---|
|
#18+
пробовал и так strcpy(par1, &(MyStruct.par1)); всеравно тоже самое. :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2004, 17:16 |
|
||
|
char в char*
|
|||
|---|---|---|---|
|
#18+
surkalexно в Оракл вдается полная лабуда, как быть? как char передать через char* В Oracle Application Developer's Guide этот вопрос рассмотрен довольно подробно. Суть - память надо выделять через функцию OCI, возвращающую память из контекста сессии. Подробно прокомментированные примеры, если не изменяет память, есть в книге Кайта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2004, 18:11 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=32798444&tid=2034040]: |
0ms |
get settings: |
8ms |
get forum list: |
22ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
90ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 229ms |
| total: | 431ms |

| 0 / 0 |
