powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Соединение c++ программы с Oracle с помощью OCCI библиотеки
15 сообщений из 15, страница 1 из 1
Соединение c++ программы с Oracle с помощью OCCI библиотеки
    #39795788
nobodyishere
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Пытаюсь подключиться из крестов к ораклу (12.1 версия).
Использую либу OCCI из ораклиного дистрибутива (oracle\product\12.1.0\client_1\oci\lib\msvc).

Работаю из под винды 10 + компилятор mingw64.

Есть следующий код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
#include <occi.h> 

void oracle_connect()
{
    using namespace oracle::occi;       
    using namespace std;
    Environment *env;              
    Connection *conn;              
    Statement *stmt;               
    env = Environment::createEnvironment (Environment::DEFAULT);
    conn = env->createConnection ("dasdas", "dasdas", "dasdas");
}

int main()
{
    oracle_connect();
}



Компилирую строкой:
g++ test.cpp -loci -lociw32 -loraocci12

Получаю ошибку:
undefined reference to `oracle::occi::Environment::createEnvironment(oracle::occi::Environment::Mode, void*, void* (*)(void*, unsigned int), void* (*)(void*, void*, unsigned int), void (*)(void*, void*))'


Необходимые библиотеки (oraocci12.lib ociw32.lib oci.lib) компилятор видит.
Мне подсказали на stackoverflow, что возможно проблема в том, что библиотеки скомпилированы с отличным ABI, который есть в используемом мною компиляторе и рекомендовали попробовать запуститься из VS.

Вопрос - кто-нибудь сталкивался с этой проблемой? Есть какие-нибудь решения, чтобы все это взлетело на mingw64?
...
Рейтинг: 0 / 0
Соединение c++ программы с Oracle с помощью OCCI библиотеки
    #39795814
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мой совет: не выпендривайся с OCCI, используй OCI.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Соединение c++ программы с Oracle с помощью OCCI библиотеки
    #39795871
nobodyishere
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

только что накатил visual studio ради интереса. occi нормально завелась и работает - линковка нормально отрабатывает...
а с mingw проблема.
...
Рейтинг: 0 / 0
Соединение c++ программы с Oracle с помощью OCCI библиотеки
    #39795895
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nobodyishereDimitry Sibiryakov,

только что накатил visual studio ради интереса. occi нормально завелась и работает - линковка нормально отрабатывает...
а с mingw проблема.
Возможно, потому что это плюсовые библиотеки. Следовательно, там задействован манглинг имён.
У MinGW манглинг имён как у GCC и Clang, у MSVS совсем другой манглинг. В этом плане ты не сможешь скормить плюсовые либы
одного тулчейна другому.
...
Рейтинг: 0 / 0
Соединение c++ программы с Oracle с помощью OCCI библиотеки
    #39795897
nobodyishere
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NekZ,

классно сделали. типа вот вам либы, но юзать их можете только под определенный компилятор так что ли получается?
...
Рейтинг: 0 / 0
Соединение c++ программы с Oracle с помощью OCCI библиотеки
    #39795898
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nobodyishere,

сказали же, ABI у них несовместимы
в дефолте VS вообще ThisCall под 32-бита использует, и фиг к нему из других компиляторов достучишься без ассемблерных вставок
самое смешное, что они и между версиями студии несовместимы бывают :-). так что ищи и студию из под которой всё это собиралось

падает уровень разработчиков, падает ..., надо быть альтернативно одарённым, что бы в либе для общего пользования объекты выставить
...
Рейтинг: 0 / 0
Соединение c++ программы с Oracle с помощью OCCI библиотеки
    #39795900
nobodyishere
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kealon(Ruslan),

см. выше - нашел уже.

Вопрос в том, как вообще народ для mingw это запускает.

Ладно я для себя балуюсь, а если задача для крупного проекта - что весь проект на VS мигрировать из-за такой лажи?)
...
Рейтинг: 0 / 0
Соединение c++ программы с Oracle с помощью OCCI библиотеки
    #39795903
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nobodyishere,

В C++20, вроде, шли разговоры о portable ABI. Это же дело такое, сам понимаешь, кропотливое и затянутое.
Используй сишный OCI и не будет проблем вообще.
...
Рейтинг: 0 / 0
Соединение c++ программы с Oracle с помощью OCCI библиотеки
    #39795905
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nobodyishereЛадно я для себя балуюсь, а если задача для крупного проекта - что весь проект на VS мигрировать из-за такой лажи?)делаешь на студии dll-ку с нормальными интерфейсами и её уже юзаешь из своего проекта

например тупо оборачиваешь

Код: plaintext
1.
2.
3.
4.
void __stdcall CallMet1(CObj1* a, ...  )
{
  a->Met1(...);
}



макрос наверное можно написать, что бы не строчить каждый раз
...
Рейтинг: 0 / 0
Соединение c++ программы с Oracle с помощью OCCI библиотеки
    #39795907
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nobodyishereNekZ,

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

Так, так. И так всегда и было.
...
Рейтинг: 0 / 0
Соединение c++ программы с Oracle с помощью OCCI библиотеки
    #39795908
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nobodyishere,

я так понимаю что "сишный OCI", о котором пишет NekZ как раз и есть такой вариант
...
Рейтинг: 0 / 0
Соединение c++ программы с Oracle с помощью OCCI библиотеки
    #39795920
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)nobodyishereЛадно я для себя балуюсь, а если задача для крупного проекта - что весь проект на VS мигрировать из-за такой лажи?)делаешь на студии dll-ку с нормальными интерфейсами и её уже юзаешь из своего проекта

например тупо оборачиваешь

Код: plaintext
1.
2.
3.
4.
void __stdcall CallMet1(CObj1* a, ...  )
{
  a->Met1(...);
}



макрос наверное можно написать, что бы не строчить каждый раз
И так от макроса, к метапрограммированию. А потом динамическая диспетчеризация, и парень изобретает ещё один COM
...
Рейтинг: 0 / 0
Соединение c++ программы с Oracle с помощью OCCI библиотеки
    #39795941
nobodyishere
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всем спасибо)
...
Рейтинг: 0 / 0
Соединение c++ программы с Oracle с помощью OCCI библиотеки
    #39795957
nobodyishere
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну да, oci компильнулся нормально.
...
Рейтинг: 0 / 0
Соединение c++ программы с Oracle с помощью OCCI библиотеки
    #39795990
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZИ так от макроса, к метапрограммированию. А потом динамическая диспетчеризация, и парень изобретает ещё один COM кодогенерация рулит, pdb-ки достаточно, что бы заголовков нагенерить
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Соединение c++ программы с Oracle с помощью OCCI библиотеки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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