Borland AnsiString и DLL на gcc
От: ka-5  
Дата: 11.06.15 12:34
Оценка:
Здравствуйте.

На работе есть программа, написанная на Borland C++ Builder 6, модули для неё в виде dll люди пишут на том же Билдере.
Технология очень давно используемая, никто основную программу переписывать не будет.
Хотел улучшить процесс написания своих dll с более современным IDE и компилятором gcc, столкнулся с проблемой обилия борландских нестандартных типов.
Ладно, всякие bool можно на char заменить, а вот что передавать на выход, когда программа хочет от моей dll получить AnsiString или когда она мне этот AnsiString присылает?
Может кто-нибудь сталкивался с подобным?

Пока что единственный выход, который мне видится — это написать на том же Билдере обёртку — ещё одну dll, которая вызывает мою со стандартными типами, а в основное приложение передаёт уже борландские. Но это будет неудобно, к каждой новой dll отдельную обёртку собирать...
Re: Borland AnsiString и DLL на gcc
От: Jack128  
Дата: 11.06.15 13:22
Оценка:
Здравствуйте, ka-5, Вы писали:

K5>Здравствуйте.


K5>На работе есть программа, написанная на Borland C++ Builder 6, модули для неё в виде dll люди пишут на том же Билдере.


K5>Пока что единственный выход, который мне видится — это написать на том же Билдере обёртку — ещё одну dll, которая вызывает мою со стандартными типами, а в основное приложение передаёт уже борландские. Но это будет неудобно, к каждой новой dll отдельную обёртку собирать...


ну напиши на c++ эмуляцию строчки борландовской, там формат тупой, как пробка.
Re[2]: Borland AnsiString и DLL на gcc
От: Pavel Dvorkin Россия  
Дата: 11.06.15 17:31
Оценка:
Здравствуйте, Jack128, Вы писали:

J>ну напиши на c++ эмуляцию строчки борландовской, там формат тупой, как пробка.


Не такой уж тупой, там динамическое неявное выделение/освобождение памяти

http://docs.embarcadero.com/products/rad_studio/radstudio2007/RS2007_helpupdates/HUpdate4/EN/html/delphivclwin32/System__AnsiString__SetLength.html
With best regards
Pavel Dvorkin
Re[3]: Borland AnsiString и DLL на gcc
От: Jack128  
Дата: 11.06.15 17:37
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Здравствуйте, Jack128, Вы писали:


J>>ну напиши на c++ эмуляцию строчки борландовской, там формат тупой, как пробка.


PD>Не такой уж тупой, там динамическое неявное выделение/освобождение памяти


PD>http://docs.embarcadero.com/products/rad_studio/radstudio2007/RS2007_helpupdates/HUpdate4/EN/html/delphivclwin32/System__AnsiString__SetLength.html


Я в курсе. Там делов то, пару операторов переопределить, да деструктор. Человеку ж не надо все методы AnsiString реализовывать.
Re[4]: Borland AnsiString и DLL на gcc
От: Pavel Dvorkin Россия  
Дата: 11.06.15 17:56
Оценка:
Здравствуйте, Jack128, Вы писали:

J>Я в курсе. Там делов то, пару операторов переопределить, да деструктор. Человеку ж не надо все методы AnsiString реализовывать.


А память будешь выделять на GCC-стороне, если придется там ее конструировать ? А освобождать ее будет Borland-EXE, которому она достанется ? Что-то мне это сомнительно.
With best regards
Pavel Dvorkin
Re[5]: Borland AnsiString и DLL на gcc
От: Jack128  
Дата: 11.06.15 18:31
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Здравствуйте, Jack128, Вы писали:


J>>Я в курсе. Там делов то, пару операторов переопределить, да деструктор. Человеку ж не надо все методы AnsiString реализовывать.


PD>А память будешь выделять на GCC-стороне, если придется там ее конструировать ? А освобождать ее будет Borland-EXE, которому она достанется ? Что-то мне это сомнительно.

память выделяется в специальной длл borlndmm.dll, именно используя функции из этой библиотеки нужно выделять и освобождать память.
Re: Borland AnsiString и DLL на gcc
От: Evgeny.Panasyuk Россия  
Дата: 12.06.15 11:15
Оценка:
Здравствуйте, ka-5, Вы писали:

K5>Пока что единственный выход, который мне видится — это написать на том же Билдере обёртку — ещё одну dll, которая вызывает мою со стандартными типами, а в основное приложение передаёт уже борландские. Но это будет неудобно, к каждой новой dll отдельную обёртку собирать...


Обычно так и делают, только обёртки пишут не вручную, а генерируют.
Re[6]: Borland AnsiString и DLL на gcc
От: Pavel Dvorkin Россия  
Дата: 12.06.15 12:32
Оценка:
Здравствуйте, Jack128, Вы писали:

PD>>А память будешь выделять на GCC-стороне, если придется там ее конструировать ? А освобождать ее будет Borland-EXE, которому она достанется ? Что-то мне это сомнительно.

J>память выделяется в специальной длл borlndmm.dll, именно используя функции из этой библиотеки нужно выделять и освобождать память.

Тогда как минимум на стороне C++ надо использовать не new, и даже не malloc, а импортировать оттуда функции этой библиотеки.
With best regards
Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.