Статьи Галерея Форум Чат Файлы HowTo Ссылки Поиск
Текущее время: 19 сен 2019, 10:34




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: OCI Oracle Call Interface
СообщениеДобавлено: 15 окт 2003, 17:57 
Есть такая вот програмка, которая просто должна приконектиться к Oracle, а потом отконектиться. Всё бы ничего, но на этапе линковке
выдаёт
undefined reference to `olog(cda_def *, unsigned char *, unsigned char *, int, unsigned char *, int, unsigned char *, int, unsigned int)'

Может кто знает, что ей не хватает. Два дня мучаюсь... всё бес толку.
Заранее спасибо.

#include <oratypes.h>
#include <ocidfn.h>
#include <ociapr.h>

cda_def *CDA;
Lda_Def *LDA;
ub1 *HDA;
int result = 1;

char *ora_name = "yankovskiy";
char *ora_pass = "deadman";
char *ora_host = "TCPA";

//---------------------------------------------------------------------------------------------------------------------------------------

int connect( void ){
CDA = new cda_def;
LDA = new Lda_Def;
HDA = new ub1[512];
memset( HDA, 0, 512 );

if( CDA == NULL || HDA == NULL || LDA == NULL ){ printf( "connect error..." ); return 1; }

setenv("TNS_ADMIN", "/u01/app/oracle/product/8.1.7/network/admin", 1 );
setenv("ORACLE_BASE", "/u01/app/oracle", 1 );
setenv("ORACLE_HOME", "/u01/app/oracle/product/8.1.7", 1 );
setenv("ORACLE_SID", "ORAW", 1 );
setenv("NLS_LANG", "american_america.CL8MSWIN1251", 1 );
setenv("NLS_NUMERIC_CHARACTERS", ". ", 1 );
setenv("LD_LIBRARY_PATH", "/u01/app/oracle/product/8.1.7/lib:/lib:/usr/lib:/u01/app/oracle/product/8.1.7/jdbc/lib:/u01/app/oracle/product/8.1.7/ctx/lib", 1 );

opinit( OCI_EV_TSF ); //Define Thread-safe envaronment
result = olog( LDA, HDA, (OraText *)ora_name, strlen( ora_name ),
(OraText *)ora_pass, strlen( ora_pass ),
0, -1, OCI_LM_DEF );
return result;
}//function
//---------------------------------------------------------------------------------------------------------------------------------------

int disconnect( void ){
if( CDA == NULL || HDA == NULL || LDA == NULL ){ printf( "disconnect error" ); return 1; }
if( result == 0 ) result = ologof( LDA );

delete LDA;
delete CDA;
delete HDA;

return result;
}//function
//---------------------------------------------------------------------------------------------------------------------------------------


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 15 окт 2003, 18:08 
Неотъемлемая часть форума
Аватара пользователя

У нас с: 30.08.2002
Сообщения: 2339
Откуда: Minsk
-loci ?

_________________
И увидел я зверя, выходящего из тундры. И число его было 3.14159265358979324...


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 15 окт 2003, 18:15 
Вопрос не очень понял. Видимо спрашивается используеься ли OCI. Да именно это. Конкретно функция olog


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 15 окт 2003, 18:32 
Неотъемлемая часть форума
Аватара пользователя

У нас с: 30.08.2002
Сообщения: 2339
Откуда: Minsk
eto ne utverjdenie, a kluch kompilyatora

pereformuliruju:
linkuetsja li biblioteka oci pri sborke programmy?

_________________
И увидел я зверя, выходящего из тундры. И число его было 3.14159265358979324...


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 15 окт 2003, 18:58 
Да она инклудится, но после этих трёх

#include <oratypes.h>
#include <ocidfn.h>
#include <ociapr.h>

теперь я поставил её первой и она скомпилила. Спасибо.

При выполнении из shell - срабатывает,
но при выполнении как CGI - ругается

t: error while loading shared libraries: libclntsh.so.8.0: cannot load shared object file: No such file or directory
[Wed Oct 15 19:55:43 2003] [error] [client 10.10.10.251] Premature end of script headers: /var/www/html/cgi-bin/t

Хотя вроде переменные окружения я ей прописал...


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 15 окт 2003, 19:04 
Эта libclntsh.so.8.0
находится здесь /u01/app/oracle/product/8.1.7/lib/libclntsh.so.8.0
и должна находится по LD_LIBRARY_PATH


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 28 ноя 2003, 14:04 
> -loci ?
Прикольно вышло, если не знать что это деректива линковщику
"ЛОСИ ?" :D

> Да она инклудится, но после этих трёх
Она не может инклудиться, это же либо, она линкуется. :)

А вообщето я всегда инклужу <oci.h>
Интересно бы знать как эта технология ведет себя по линуксом, я ее под винду использую так было очень много проблем.
Например, если в цикле запускать потоки а в потоках делать OCIHandleAlloc
а затем OCIHandleFree, например для OCIStmt, так через некоторое время все вылетает, в Call Stack показывает что ошибка прозошла где то глубоко в Oracle. Так что пришлось выносить создание дескрипторов в самое начало.


Вернуться к началу
  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
[ All resources are available under GNU GPL ] [ Support ] [ Hosted by DataHata | MyCloud.by ] [ Powered by phpBB® Forum Software © phpBB Group ]

LVEE Winter LVEE Rambler's Top100