Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.138.114.94] |
|
Сообщ.
#1
,
|
|
|
Уважаемые, кто работает на Linux в Code::Blocks ,
или в другой среде не важно установлю , подскажите имеется библиотеки .so и .h к ним как подключить их к среде разработке чтобы использовать функции из этих библиотек в своем приложении на С++ все бы не чего и вопрос может был бы не вопрос но к описанию к этим библиотекам сказано "Клиентские библиотеки используются в расширении для php. " но я чувствую что их можно использовать поскажите как их подключить и проверить Прикреплённый файлphplinux.7z (81,76 Кбайт, скачиваний: 84) |
Сообщ.
#2
,
|
|
|
Project->Build options->[Debug/Release]->Linker settings->Link libraries->Add
|
Сообщ.
#3
,
|
|
|
Цитата Олег М @ Project->Build options->[Debug/Release]->Linker settings->Link libraries->Add ОК наконецто попробую а то дома на Ubunte сижу а еще не одной буквы не скомпилил , все на Win да на Win щас с работы прийду и стартану делать Админку под Linux |
Сообщ.
#4
,
|
|
|
Цитата Олег М @ Project->Build options->[Debug/Release]->Linker settings->Link libraries->Add выставил , но что то не идет или не подключилось при запуске ошибки ||=== Build: Debug in Test1 (compiler: GNU GCC Compiler) ===| /home/vova/Рабочий стол/Pro/Test1/hscli.h|106|error: expected initializer before ‘hcSqlCbkSrvMsgT’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|107|error: expected initializer before ‘hcSqlCbkStmtSrvMsgT’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|109|error: expected initializer before ‘hcSqlCbkSrvUserSendT’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|110|error: expected initializer before ‘hcSqlCbkStmtSrvUserSendT’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|121|error: expected initializer before ‘hcSqlInit’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|125|error: expected initializer before ‘hcSqlDone’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|128|error: expected initializer before ‘hcSqlCheckInit’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|132|error: expected initializer before ‘hcSqlAllocConnect’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|136|error: expected initializer before ‘hcSqlFreeConnect’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|140|error: expected initializer before ‘hcSqlConnect’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|147|error: expected initializer before ‘hcSqlDisconnect’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|157|error: expected initializer before ‘hcSqlGetConnectAttr’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|172|error: expected initializer before ‘hcSqlSetConnectAttr’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|180|error: expected initializer before ‘hcSqlAlterPassword’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|188|error: expected initializer before ‘hcSqlAllocStmt’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|193|error: expected initializer before ‘hcSqlFreeStmt’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|197|error: expected initializer before ‘hcSqlSetStmtAttr’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|204|error: expected initializer before ‘hcSqlExecDirect’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|209|error: expected initializer before ‘hcSqlExecDirectAsync’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|214|error: expected initializer before ‘hcSqlExecDirectQuery’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|218|error: expected initializer before ‘hcSqlNumResultCols’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|223|error: expected initializer before ‘hcSqlRowCount’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|284|error: expected initializer before ‘hcSqlGetStmtAttr’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|294|error: expected initializer before ‘hcSqlOpenResults’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|299|error: expected initializer before ‘hcSqlReadResults’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|307|error: expected initializer before ‘hcSqlCloseResults’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|317|error: expected initializer before ‘hcSqlIncludeResultsItem’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|329|error: expected initializer before ‘hcSqlExcludeResultsItem’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|336|error: expected initializer before ‘hcSqlReplaceResultsItem’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|350|error: expected initializer before ‘hcSqlGetResultsItem’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|362|error: expected initializer before ‘hcSqlStmtTouch’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|366|error: expected initializer before ‘hcSqlStmtDeleteResults’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|371|error: expected initializer before ‘hcSqlStmtSort’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|377|error: expected initializer before ‘hcSqlStmtUnsort’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|386|error: expected initializer before ‘hcSqlInsertRecord’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|394|error: expected initializer before ‘hcSqlAddRecords’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|402|error: expected initializer before ‘hcSqlReadRecordByHandle’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|410|error: expected initializer before ‘hcSqlHandleFromRecNo’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|425|error: expected initializer before ‘hcSqlStmtEdit’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|436|error: expected initializer before ‘hcSqlFormRecordsSet’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|443|error: expected initializer before ‘hcSqlConnReadMsg’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|455|error: expected initializer before ‘hcSqlPrepare’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|460|error: expected initializer before ‘hcSqlExecute’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|468|error: expected initializer before ‘hcTestConnect’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|496|error: expected initializer before ‘hscliProcStart’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|497|error: expected initializer before ‘hscliProcExit’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|498|error: expected initializer before ‘hscliThrdStart’| /home/vova/Рабочий стол/Pro/Test1/hscli.h|499|error: expected initializer before ‘hscliThrdExit’| ||=== Build failed: 48 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===| Добавлено хотя даже ни одной функции не вызываю , а только подключил "hscli.h" и hscli.so.1 mai.n #define HYCFG_WIN32 #include <iostream> #include "hscli.h" using namespace std; int main() { int err = -5 ; //err = hcSqlParmT Init = { sizeof(Init) }; // Адрес структуры с параметрами инициализации //err = hcSqlInit(&Init) ; // Инициализация клиентской части //err = hcSqlCheckInit() ; // Проверка завершения инициализации cout << err << endl; return 0; } |
Сообщ.
#5
,
|
|
|
#define HYCFG_WIN32 поменял на #define HYCFG_LINUX
ошибок нет но и не запускается |
Сообщ.
#7
,
|
|
|
Цитата ЫукпШ @ посмотри тут простой пример. посмотрел но даже не могу сообразить как применить к своему случаю, у меня получается не может распознать объявления функций из hscli.so.1 может библиотека кривая ? как бы это можно было узнать , или в Code::Blocs чето не то делаю |
Сообщ.
#8
,
|
|
|
Цитата kms @ у меня получается не может распознать объявления функций из hscli.so.1 может библиотека кривая ? как бы это можно было узнать , Тогда попробуй явную загрузку. dlopen + dlsym + dlclose. |
Сообщ.
#9
,
|
|
|
Цитата ЫукпШ @ это надо прописать в С++ коде ???dlopen + dlsym + dlclose. я правильно понимаю ? Добавлено да вот еще при сборке не заметил раньше -------------- Build: Debug in Test1 (compiler: GNU GCC Compiler)--------------- g++ -L../Test1 -o bin/Debug/Test1 obj/Debug/main.o lib/hscli.so.1 lib/hscli.so.1: error adding symbols: Файл в неправильном формате collect2: error: ld returned 1 exit status Process terminated with status 1 (0 minute(s), 0 second(s)) 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) |
Сообщ.
#10
,
|
|
|
делаю
#define HYCFG_LINUX #include <dlfcn.h> #include <iostream> #include <stdio.h> #include <string.h> #include "hscli.h" using namespace std; int main() { void *x = dlopen( "/home/vova/Test1/lib/hscli.so.1", RTLD_LAZY ); cout << err << endl; return 0; } ошибка ||=== Build: Debug in Test1 (compiler: GNU GCC Compiler) ===| /home/vova/Test1/main.cpp||In function ‘int main()’:| /home/vova/Test1/main.cpp|19|warning: unused variable ‘x’ [-Wunused-variable]| ||error: ld returned 1 exit status| ||=== Build failed: 1 error(s), 1 warning(s) (0 minute(s), 0 second(s)) ===| |
Сообщ.
#11
,
|
|
|
А что такое err? Сделай вместо него errno
|
Сообщ.
#12
,
|
|
|
как проверить нормальные ли эти либы
vova@comp:~$ nm -D '/home/vova/Рабочий стол/php/hscli.so.1' U abort U __assert_fail U calloc U __cxa_allocate_exception U __cxa_atexit w __cxa_finalize U __cxa_throw U fclose U feof U fgets U fopen U fprintf U fputs U free U fscanf U getpid w __gmon_start__ U __gxx_personality_v0 0000ad86 T hcSqlAddRecords 00003d5a T hcSqlAllocConnect 0000a33a T hcSqlAllocStmt 000081ae T hcSqlAlterPassword 00007eb2 T hcSqlCheckInit 00007742 T hcSqlCloseResults 00003e5c T hcSqlConnect 000077b8 T hcSqlConnReadMsg 00003f08 T hcSqlDisconnect 00007e76 T hcSqlDone 00009070 T hcSqlExcludeResultsItem 000072ce T hcSqlExecDirect 0000735c T hcSqlExecDirectAsync 000073ea T hcSqlExecDirectQuery 000072c4 T hcSqlExecute 000094a0 T hcSqlFormRecordsSet 00003de6 T hcSqlFreeConnect 0000a3cc T hcSqlFreeStmt 00003f7e T hcSqlGetConnectAttr 00009166 T hcSqlGetResultsItem 00007584 T hcSqlGetStmtAttr 0000ae1e T hcSqlHandleFromRecNo 00008ff4 T hcSqlIncludeResultsItem 00007e3c T hcSqlInit 0000acee T hcSqlInsertRecord 00007460 T hcSqlNumResultCols 00007610 T hcSqlOpenResults 000072ba T hcSqlPrepare 00008620 T hcSqlReadRecordByHandle 000076a2 T hcSqlReadResults 000090ea T hcSqlReplaceResultsItem 000074f2 T hcSqlRowCount 0000400a T hcSqlSetConnectAttr 0000a442 T hcSqlSetStmtAttr 0000b532 T hcSqlStmtDeleteResults 000091e2 T hcSqlStmtEdit 0000b5ac T hcSqlStmtSort 0000b4bc T hcSqlStmtTouch 0000b628 T hcSqlStmtUnsort 00004086 T hcTestConnect 00000000 A HSCLI_1.0.0.0 0000bcf0 T hscliLinks 0000bb9e T hscliProcExit 0000ba54 T hscliProcStart 0000bc6a T hscliThrdExit 0000bc1e T hscliThrdStart U hsGetI24 U hsheapProcExit U hsheapProcStart U hsheapThrdExit U hsheapThrdStart U hsInptCheckInit U hsInptCheckRead U hsInptClose U hsInptConnect U hsInptDisconnect U hsInptLocalAddr U hsInptOpen U hsinptProcExit U hsinptProcStart U hsInptRead U hsInptReadF U hsInptRemoteAddr U hsInptSendMsg U hsInptSendMsg2 U hsInptSendMsgV U hsinptThrdExit U hsinptThrdStart U hsLHeapAlloc U hsLHeapFree U hslogfProcExit U hslogfProcStart U hslogfThrdExit U hslogfThrdStart U hsLogMessage U isalpha w _Jv_RegisterClasses U localtime_r U memcmp U memcpy U memset U printf U pthread_join U pthread_kill U pthread_mutex_destroy U pthread_mutex_init U pthread_mutex_lock U pthread_mutex_unlock U pthread_self U readlink U rewind U sched_yield U snprintf U sprintf U strcat U strcpy U strlen U strncpy U strtod U strtol U time v timezone U __timezone U _Unwind_Resume U vsprintf U _ZTVN10__cxxabiv116__enum_type_infoE U _ZTVN10__cxxabiv117__class_type_infoE U _ZTVN10__cxxabiv120__si_class_type_infoE vova@comp:~$ Добавлено Цитата Олег М @ А что такое err? Сделай вместо него errno не это вообще у меня опечатка |
Сообщ.
#13
,
|
|
|
Цитата kms @ не это вообще у меня опечатка А dlopen что возвращает? |
Сообщ.
#14
,
|
|
|
#include <stdio.h> #include "hscli.h" #include <dlfcn.h> #include <iostream> #include <string.h> int main(void) { void *x = dlopen( "/home/vova/Test1/lib/hscli.so.1", RTLD_LAZY ); printf("%d", x); return 0; } возращает -------------- Build: Debug in Test1 (compiler: GNU GCC Compiler)--------------- g++ -Wall -fexceptions -m32 -c /home/vova/Code::Blocs/Test1/main.cpp -o obj/Debug/main.o /home/vova/Code::Blocs/Test1/main.cpp: In function ‘int main()’: /home/vova/Code::Blocs/Test1/main.cpp:14:17: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘void*’ [-Wformat=] printf("%d", x); ^ g++ -o bin/Debug/Test1 obj/Debug/main.o -m32 /usr/lib/libhscli.so /usr/lib/libhsheap.so /usr/lib/libhsinpt.so /usr/lib/libhslogf.so obj/Debug/main.o: In function `main': main.cpp:(.text+0x1c): undefined reference to `dlopen' collect2: error: ld returned 1 exit status Process terminated with status 1 (0 minute(s), 0 second(s)) 2 error(s), 1 warning(s) (0 minute(s), 0 second(s)) |
Сообщ.
#15
,
|
|
|
Не найдено определение "dlopen".
Оно должно быть в файле "dlfcn.h". Посмотри, есть ли оно там действительно. --- Может ты при написании исходника случайно частично использовал кирилицу ? Вместо латинской "o" набрал русскую "о" или что-то в этом роде.. |
Сообщ.
#16
,
|
|
|
Цитата ЫукпШ @ Не найдено определение "dlopen". Оно должно быть в файле "dlfcn.h". он подключен текст выше, Цитата ЫукпШ @ Посмотри, есть ли оно там действительно. кто ???? в смысле описание стандартной функции dlopen ????? Цитата ЫукпШ @ Может ты при написании исходника случайно частично использовал кирилицу ? исходника библиотеки ??? библиотека то не моя и она уже собрана , сделана , как я могу посмотреть что там внутри или хотябы проверить ее ???? Цитата ЫукпШ @ Вместо латинской "o" набрал русскую "о" или что-то в этом роде.. а если насчет моего исходника то он даже не компилится вообще без кода даже вот такой #include <stdio.h> //#include "hscli.h" //#include <dlfcn.h> //#include <iostream> //#include <string.h> int main(void) { // void *x = dlopen( "/home/vova/Test1/lib/hscli.so.1", RTLD_LAZY ); // printf("%d", x); // return 0; } |
Сообщ.
#17
,
|
|
|
Там была ошибка линкера, для dlopen тоже нужно подключать библиотеку
В Project->Build options->[Debug/Release]->Linker settings->Other linker options добавь -ldl Из Link libraries удали всё #include <iostream> #include <dlfcn.h> int main() { auto lib = dlopen("/home/vova/Test1/lib/hscli.so.1", RTLD_NOW); printf("%p, %s\n", lib, dlerror()); return 0; } |
Сообщ.
#18
,
|
|
|
Цитата Олег М @ В Project->Build options->[Debug/Release]->Linker settings->Other linker options добавь -ldl Понял деллаю |