Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
16 / 16 / 1
Регистрация: 27.02.2017
Сообщений: 197

Подключить .SO и использование функций

30.03.2017, 22:53. Показов 2426. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые знатоки Си под Linux подскажите такой вопрос
Имеется *набор клиентских библиотек использующихся в расширении для php под СУБД HyTech (прилагается см. ниже )

возможно ли эти библиотеки подключить и использовать не для PHP
а при написании оконного приложения на Си или С++, ( например в Code::Blocks )

и если возможно подскажите хоть в двух словах , как сделать простейшее приложение вызывающее хоть одну функцию из этих библиотек
прототипы функций как я понял в .h файле
Вложения
Тип файла: 7z phplinux.7z (81.8 Кб, 9 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.03.2017, 22:53
Ответы с готовыми решениями:

Благодаря какой команде можно подключить содержимое библиотеки bash-функций?
Благодаря какой команде можно подключить содержимое библиотеки bash-функций

При использование функций компилятор выдает ошибки
Здравствуйте, надо использовать некоторые функции библиотеки amd framewave вместо обычных. Я столкнулся с некоторыми сложностями. При...

Множественное наследование, Перегрузка функций, Перегрузка операторов, Использование дружественных функций и классов, Использование шаблонов классов
Здравствуйте!!! Я бы хотел попросить помоч решить...ну или скинуть примеры таких задач, если вдруг у вас они завалялись на компе или...

9
Заблокирован
30.03.2017, 23:03
Если есть прототипы, то подключи их к своему сорцу. Вызов функции пишешь как обычно. А потом при линковке указать путь к .so.
1
16 / 16 / 1
Регистрация: 27.02.2017
Сообщений: 197
30.03.2017, 23:37  [ТС]
Если есть прототипы, то подключи их к своему сорцу. Вызов функции пишешь как обычно. А потом при линковке указать путь к .so.
Если не трудно подскажите как мне это сделать , у меня Ubuntu и Code::Blocks

Добавлено через 1 минуту
.h файл и .so есть (они в архиве) куда мне их положить что бы можно было работать
0
Заблокирован
30.03.2017, 23:48
Цитата Сообщение от fssf11 Посмотреть сообщение
Code::Blocks
Подожди кого-нибудь, кто этим же инструментом пользуется, я пас.
1
 Аватар для qwarta
73 / 73 / 11
Регистрация: 20.11.2009
Сообщений: 238
01.04.2017, 11:13
fssf 11, есть два путя:
Раз
Два
1
16 / 16 / 1
Регистрация: 27.02.2017
Сообщений: 197
01.04.2017, 11:20  [ТС]
Цитата Сообщение от qwarta Посмотреть сообщение
fssf 11, есть два путя:
Раз
Два
спасибо делаю все как написано но ошибки , наверно это что то с библиотеками
0
16 / 16 / 1
Регистрация: 27.02.2017
Сообщений: 197
01.04.2017, 11:23  [ТС]
qwarta, вас не затруднит посмотреть
Вложения
Тип файла: 7z hscli.so.7z (34.4 Кб, 5 просмотров)
0
16 / 16 / 1
Регистрация: 27.02.2017
Сообщений: 197
01.04.2017, 11:59  [ТС]
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#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;
 
}
Добавлено через 57 секунд
ошибки
||=== 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)) ===|
Добавлено через 41 секунду
это и есть как раз весь список из библиотеки

Добавлено через 31 минуту
в main.cpp
поменял #define HYCFG_WIN32 на #define HYCFG_LINUX
ошибок не показывает но и просто не запускается
0
 Аватар для qwarta
73 / 73 / 11
Регистрация: 20.11.2009
Сообщений: 238
02.04.2017, 11:19
После копания тырнетов и танцев с бубном сделал так:
1. hscli.h привел к виду
Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#define HSCLI_OP_POSITION   1
#define HSCLI_OP_REFRESH    2
#define HSCLI_OP_UPDATE     3
#define HSCLI_OP_DELETE     4
#define HSCLI_OP_INSERT     5
#define HSCLI_LOCK_BEFORE   0x0001
#define HSCLI_UNLOCK_AFTER  0x0002  
#define HSCLI_LOCK_INTIME   0x0004
#define HSCLI_STMT_DST_INFO 107
#define HSCLI_STMT_RC_TYPE  109
#define HSCLI_STMT_RC_SIZE  110
#define HSCLI_STMT_RC_BODY  111 
#define HSCLI_STMT_CURSNO   140
#define HSCLI_STMT_ALS_INFO 106
#define HSCLI_RES_NONE      -1
#define HSCLI_RES_RECORD    0
#define HSCLI_RES_JOIN      3
#define HSCLI_RES_SORTED    4
#define HSCLI_RES_GROUP     5
#define HSCLI_RES_SORTJOIN  6
#define HSCLI_ET_CHAR       0
#define HSCLI_ET_ARRA       1
#define HSCLI_ET_BYTE       2
#define HSCLI_ET_INTR       3
#define HSCLI_ET_WORD       4
#define HSCLI_ET_DATE       5
#define HSCLI_ET_NMBR       6
#define HSCLI_ET_LONG       7
#define HSCLI_ET_DWRD       8
#define HSCLI_ET_FLOA       9
#define HSCLI_ET_CURR       10
#define HSCLI_ET_DFLT       11
#define HSCLI_ET_QINT       12
#define HSCLI_ET_QWRD       13
#define HSCLI_EK_NOTKEY     0
#define HSCLI_EK_COMMON     1
#define HSCLI_EK_UNIQUE     2
#define HSCLI_EK_SURRGT     3
#define HSCLI_STMT_SAB_TYPE     102
#define HSCLI_STMT_SAB_HNDCNT   103
#define HSCLI_STMT_SAB_HANDLES  104
#define HSCLI_STMT_ALS_CNT  10
#define HSCLI_ATTR_FLD_VERBOSE      1001
#define HSCLI_ATTR_CONN_USER_INFO   1002
#define HSCLI_ATTR_CBK_SRVMSG       1100
#define HSCLI_ATTR_CBK_SRVUSERSEND  1101
#define HSCLI_ATTR_CBK_STMT_SRVMSG  1102
#define HSCLI_ATTR_CBK_STMT_SRVUSERSEND 1103
#define HSCLI_CONN_SRV_PATH 101
#define HSCLI_CONN_SRV_VERS 102
#define HSCLI_CONN_SRV_VERS2    103
#define HSCLI_CONN_USER_INFO    151
#define HSCLI_CONN_LCLADDR  152
#define HSCLI_CONN_RMTADDR  153
#define SQL_RTL_LCL_REMOTE      -20001
#define SQL_RTL_LCL_USER_BREAK      -20002
#define SQL_RTL_LCL_NO_INIT     -20003
#define SQL_RTL_LCL_GENERAL_ERROR   -20004
#define SQL_RTL_LCL_BUSY        -20005
#define SQL_RTL_LCL_NO_MEMORY       -20006
#define SQL_RTL_LCL_TOO_MANY_SESSIONS   -20007
#define SQL_RTL_LCL_INV_ARG     -20008
#define SQL_RTL_LCL_TOO_OLD_SERVER  -20009
 
typedef struct hcSqlAliasInfoT
{   int hthandle;
    char    tname[32];
    char    aname[32];
} hcSqlAliasInfoT;
typedef struct hcSqlDstInfoT
{   int     aliasno;
    int     fieldno;
    int     type;
    unsigned    len;
    unsigned    off;
    char    coder[32];
    char    fname[32];
    int     func;
    char    asname[32];
    int     key;
    int     resno;
} hcSqlDstInfoT;
typedef struct hcSqlParmT
{   
    unsigned size;      
} hcSqlParmT;
 
int hcSqlInit(hcSqlParmT *arg);
int hcSqlDone(void);
int hcSqlCheckInit(void);
int hcSqlAllocConnect(int   *pdb);
int hcSqlFreeConnect(int hdb);
int hcSqlConnect(int hdb, const char *server, const char *user, const char *password);
int hcSqlDisconnect(int hdb);
int hcSqlSetConnectAttr(int h, unsigned option, void *pValue, unsigned size);
int hcSqlAlterPassword(int hdb, const char *name, const char *oldpswd, const char *newpswd);
int hcSqlAllocStmt(int db, int *p);
int hcSqlFreeStmt(int h);
int hcSqlSetStmtAttr(int h, unsigned option, void *pValue, unsigned size);
int hcSqlExecDirect(int h, const char *text);
int hcSqlExecDirectAsync(int h, const char *text);
int hcSqlExecDirectQuery(int h);
int hcSqlNumResultCols(int h, int *pCol);
int hcSqlRowCount(int h, long *pCnt);
int hcSqlGetStmtAttr(int h, unsigned option, int pos, void *pValue, unsigned size, unsigned *cnt);
int hcSqlOpenResults(int h, unsigned *pRecSize);
int hcSqlReadResults(int h, long    gStart, void *pBuf, unsigned wBufSize, unsigned *cnt);
int hcSqlCloseResults(int h);
int hcSqlIncludeResultsItem(int h, long gRecNo, const void *pNewItem, unsigned wLen);
int hcSqlExcludeResultsItem(int h, long gRecNo);
int hcSqlReplaceResultsItem(int h, long gRecNo, const void *pNewItem, unsigned wLen);
int hcSqlGetResultsItem(int h, long gRecNo, void    *pItem, unsigned bufsz);
int hcSqlStmtTouch(int h);
int hcSqlStmtDeleteResults(int h, long *cnt);
int hcSqlStmtSort(int h, int nFldCnt,int *pFields);
int hcSqlStmtUnsort(int h);
int hcSqlInsertRecord(int   hdb, const char *name, unsigned len, void *pRecord, long    *pRecNo);
int hcSqlAddRecords(int hdb, const char *pName, long gRecCount, unsigned wRecSize,  const void *pBuf);
int hcSqlReadRecordByHandle(int hdb, const char *name, long hRecord,    void *pRecord, unsigned bufsz);
int hcSqlHandleFromRecNo(int hdb, const char *name, long gRecNo, long   *record);
int hcSqlStmtEdit(int h, const char *pTab, long row,    int op, int lock, void *buf, unsigned sz, long *recno);
int hcSqlFormRecordsSet(int h, const char *pName, long gCnt, const long *pRecordNo);
int hcSqlConnReadMsg(int hdb,   void *buf, unsigned sz, unsigned *cnt);
int hcSqlPrepare(int h, const char *text);
int hcSqlExecute(int h);
int hcTestConnect(int   hdb, const char *server, const char *user, const char *password);
int hscliProcStart(void);
int hscliProcExit(void);
int hscliThrdStart(void);
int hscliThrdExit(void);

2. Библиотеки привел к виду libhscli.so
3. Все файлы, включая исходник
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include "hscli1.h"
 
int main(void) 
{
    int err;
    struct hcSqlParmT Init;
    
    err = hcSqlInit(&Init);
    printf("%d", err);
    err = hcSqlCheckInit();
    printf("%d", err);
    return 0;
}
, лежат в папке ~/php.
После компиляции имеем:

Команда objdump -tT libhsinpt.so ясности не внесла.
Здесь мои познания заканчиваются, удачи.
1
16 / 16 / 1
Регистрация: 27.02.2017
Сообщений: 197
02.04.2017, 12:13  [ТС]
Цитата Сообщение от qwarta Посмотреть сообщение
Здесь мои познания заканчиваются, удачи.
БОЛЬШУЩЕЕ СПАСИБО

Добавлено через 1 минуту
Цитата Сообщение от qwarta Посмотреть сообщение
Все файлы, включая исходник
CВыделить код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include "hscli1.h"
int main(void)
{
* * int err;
* * struct hcSqlParmT Init;
err = hcSqlInit(&Init);
* * printf("%d", err);
* * err = hcSqlCheckInit();
* * printf("%d", err);
* * return 0;
}
, лежат в папке ~/php.

немножко недопонял а где эта папка ????

Добавлено через 11 минут
у меня выдает такую ошибку
-------------- Build: Debug in Test1 (compiler: GNU GCC Compiler)---------------

g++ -L../Test1 -o bin/Debug/Test1 obj/Debug/main.o lib/hscli.so lib/hsheap.so lib/hsinpt.so lib/hslogf.so
lib/hscli.so: 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))
Добавлено через 12 минут
Да может , действительно что то с библиотеками

или подскажите может как то библиотеки переделать возможно ? не имея исходников на эти библиотеки ?
или компилятор другой или попробывать на другом дистрибутиве , библиотеки то очень старые , как узнать их формат под что они сделаны и так далее ....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.04.2017, 12:13
Помогаю со студенческими работами здесь

Итерационные циклы,Определение и вызов функций,Использование библиотечных функций stdio.h
Помогите решить задания: 1.Дано натуральное число n. Найти разность между первой цифрой этого числа и суммой всех остальных. ...

Задача на использование функций в качестве параметров других функций
Составить программу по заданному условию. Первая часть условия является заданием на разработку процедуры для любой функции f или (f1,f2)....

Работа с двумерными числовыми массивами. Использование указателей. Использование функций пользователя.
Помогите пожалуйста!!!!!!! Сделать три варианта: первый вариант – передача данных между функциями с помощью глобального...

Использование математических функций и функций работы со строками
Составить процедуру для вычисления и печати значений переменных y и z для заданных значений переменной x, в соответствии с вариантом. ...

Использование функций и шаблонов функций
Составьте программу – формирование цены на молоко. Животновод в начале каждой зимы цену на молоко на р%, а каждым летом снижает на столько...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru