|
|
|
проблемы переписи с дельфей на с++ под линухом
|
|||
|---|---|---|---|
|
#18+
В с++ я к сожалению не силён, поэтому просьба пинать не сильно. Долго и нудно пытаюсь переписать свои виндовые udf под линух. На текущий момент родилось такое: === my_udf.cpp === #include <iostream> #include <cstdio> using namespace std; extern string FormatIBFloat (double f) { char s[20]; sprintf(s, "%.2f", f); return s; } Она просто форматирует число в строку. Откомпилировал так: c++ my_udf.cpp -shared -fPIC -o libmy_udf.so Положил libmy_udf.so в /usr/lib/firebird/2.5/UDF Сказал: sudo /etc/init.d/firebird2.5-classic restart Запустил от рута (для чистоты эксперимента) консоль isql-fb. Объявил в базе: SQL> DECLARE EXTERNAL FUNCTION FORMATFLOAT CON> DOUBLE PRECISION CON> RETURNS CSTRING(20) FREE_IT CON> ENTRY_POINT 'FormatIBFloat' MODULE_NAME 'libmy_udf.so'; Дальше попросил: SQL> select formatfloat(123.456) from rdb$database; Получил в ответ: Statement failed, SQLSTATE = 39000 invalid request BLR at offset 63 -function FORMATFLOAT is not defined -module name or entrypoint could not be found Права стоят такие: ls -lh /usr/lib/firebird/2.5/UDF итого 96K -rw-r--r-- 1 root root 19K февр. 5 2013 fbudf.so -rw-r--r-- 1 root root 7,0K февр. 5 2013 fbudf.sql -rw-r--r-- 1 root root 19K февр. 5 2013 ib_udf2.sql -rw-r--r-- 1 root root 15K февр. 5 2013 ib_udf.so -rw-r--r-- 1 root root 19K февр. 5 2013 ib_udf.sql -rwxr-xr-x 1 root root 8,7K февр. 22 19:55 libmy_udf.so думаю х ей не мешает.. впрочем без него не лучше Где тут есть ошибки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2014, 22:41:22 |
|
||
|
проблемы переписи с дельфей на с++ под линухом
|
|||
|---|---|---|---|
|
#18+
sydenisГде тут есть ошибки? Везде. Читай http://ibase.ru/develop.htm#udf Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2014, 23:03:14 |
|
||
|
проблемы переписи с дельфей на с++ под линухом
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovВезде. Читай http://ibase.ru/develop.htm#udf C этого и начинал. Под виндой и на паскале всё работает уже много лет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2014, 23:12:14 |
|
||
|
проблемы переписи с дельфей на с++ под линухом
|
|||
|---|---|---|---|
|
#18+
sydenischar s[20]; sprintf(s, "%.2f", f); return s; совсем не сочетается с free_it. возьми как пример любую простую библиотеку, хоть fbudf, хоть rfunc, главное чтобы на Ц было. Потом, я не силен в С, но extern в данном случае не то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2014, 23:43:06 |
|
||
|
проблемы переписи с дельфей на с++ под линухом
|
|||
|---|---|---|---|
|
#18+
sydenisПод виндой и на паскале всё работает уже много лет. кстати, были случаи, когда "много лет" работал реально кривой код. Не в самой функции, а в объявлении параметров, с stdcall, и т.д. Просто так совпало, что функция только прикидывалась, что работала. Как только что-то меняли - блямс, и работать переставало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2014, 23:46:13 |
|
||
|
проблемы переписи с дельфей на с++ под линухом
|
|||
|---|---|---|---|
|
#18+
Аффтар, не выпендривайся, просто собери свою библиотеку свежим FPC. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2014, 00:37:40 |
|
||
|
проблемы переписи с дельфей на с++ под линухом
|
|||
|---|---|---|---|
|
#18+
kdv, ну, конечно, всё может быть... Но за много лет она работала на разных осях от ХР до 2008 сервера, на многих машинах, перекомпилировалась под х64, многократно переписывалась, оптимизировалась и т.п. Наверно, там не всё идеально, но к работе до сих так претензий и не проявилось, даже на некорректных данных... Но rfunc я посмотрю непременно. Просто сложно быстро разобраться в чужом коде, тем более не зная языка. Аффтар, не выпендривайся, просто собери свою библиотеку свежим FPC. От чего же непременно не выпендриваться? Что-то новое тоже хочется попробовать. Интересны были бы ответы знающих с++: какой тип данных лучше использовать, правильные директивы для экспорта... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2014, 10:27:06 |
|
||
|
проблемы переписи с дельфей на с++ под линухом
|
|||
|---|---|---|---|
|
#18+
sydenisИнтересны были бы ответы знающих с++: какой тип данных лучше использовать, правильные директивы для экспорта... Не в типах данных и не в директивах экспорта проблема: они не отличаются от дельфийских. Ты совершенно не понимаешь работу с памятью и область видимости/время жизни переменных. А это базовые вещи, независимые от языка. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2014, 12:38:22 |
|
||
|
проблемы переписи с дельфей на с++ под линухом
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovТы совершенно не понимаешь работу с памятью Уважаемый, ты об этом делаешь выводы по кусочку кода, написанному на незнакомом мне языке, с незнакомыми и ОТЛИЧНЫМИ от дельфи механизмами работы с памятью строк? Я даже не буду тебе что-то доказывать. Хочешь помочь - велкам. Если просто есть желание пальцами водить - спускайся на лавочку к подъезду - там оценят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2014, 14:17:06 |
|
||
|
проблемы переписи с дельфей на с++ под линухом
|
|||
|---|---|---|---|
|
#18+
sydenis> Хочешь помочь - велкам Так тебе уже подсказали - внутри функции с памятью неправильно работаешь (посмотри в любой UDF-ке). Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2014, 14:49:13 |
|
||
|
проблемы переписи с дельфей на с++ под линухом
|
|||
|---|---|---|---|
|
#18+
sydenisты об этом делаешь выводы по кусочку кода, написанному на незнакомом мне языке, с незнакомыми и ОТЛИЧНЫМИ от дельфи механизмами работы с памятью строк? Ага. Ответь на два вопроса: в своих UDF на Дельфи ты тоже 1) Возвращаешь String? 2) Возвращаешь указатель на локальную переменную? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2014, 14:51:35 |
|
||
|
проблемы переписи с дельфей на с++ под линухом
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам(посмотри в любой UDF-ке) В любой - не надо. У kdv на сайте толпа кривых примеров, где память выделяется malloc-ом, как и в rfunc. Правильные примеры - это штатные ibudf и fbudf. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2014, 14:55:35 |
|
||
|
проблемы переписи с дельфей на с++ под линухом
|
|||
|---|---|---|---|
|
#18+
Что забавно, в udflib.c из examples тоже malloc. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2014, 15:05:49 |
|
||
|
проблемы переписи с дельфей на с++ под линухом
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустамв udflib.c из examples тоже malloc. В трекер. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2014, 15:09:47 |
|
||
|
проблемы переписи с дельфей на с++ под линухом
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovУ kdv на сайте толпа кривых примеров, где память выделяется malloc-ом, как и в rfunc. в rfunc уже давно должен быть ib_util_malloc. в changes.txt это написано, кстати. а насчет "кривых примеров" - ты бы мне потыкал, а я бы их покоцал. Ну или сам на недельке перепроверю, почище. sydenisты об этом делаешь выводы по кусочку кода, написанному на незнакомом мне языке так вот и вызывает удивление, что ты на сях сделал все совершенно по другому, чем у тебя на дельфях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2014, 15:46:29 |
|
||
|
проблемы переписи с дельфей на с++ под линухом
|
|||
|---|---|---|---|
|
#18+
kdvтак вот и вызывает удивление, что ты на сях сделал все совершенно по другому, чем у тебя на дельфях. Замечание верное. Но в том-то и вопрос у меня. Если в винде я знаю каким менеждером памяти пользуется fb и в своём коде соотв. образом выделяю память под строки, то с++ для меня тёмный лес - я даже не знаю как там называется ib_util_malloc и как её вызвать. Это в винде. А в линухе - там может быть совсем другой менежер, с другими именами функций... мне это неизвестно. Вот я спрашиваю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2014, 10:29:15 |
|
||
|
проблемы переписи с дельфей на с++ под линухом
|
|||
|---|---|---|---|
|
#18+
sydenisЕсли в винде я знаю каким менеждером памяти пользуется fb и в своём коде соотв. образом выделяю память под строки, то с++ для меня тёмный лес - я даже не знаю как там называется ib_util_malloc и как её вызвать. Шутишь, да? Загляни в {PF}\Firebird\include\ib_util.* ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2014, 10:32:15 |
|
||
|
проблемы переписи с дельфей на с++ под линухом
|
|||
|---|---|---|---|
|
#18+
sydenisЕсли в винде я знаю каким менеждером памяти пользуется fb и в своём коде соотв. образом выделяю память под строки, то с++ для меня тёмный лес - я даже не знаю как там называется ib_util_malloc и как её вызвать.Ты действительно думаешь, что менеджер памяти в ФБ зависит о того, на чём ты пишешь УДФ ? Ты хоть один пример из стандартных УДФ смотрел ? (я знаю ответ на этот вопрос) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2014, 11:21:24 |
|
||
|
проблемы переписи с дельфей на с++ под линухом
|
|||
|---|---|---|---|
|
#18+
wadmanЗагляни в {PF}\Firebird\include\ib_util.* Вот. Уже ближе к теме. Теперь интересно каким менеджером / имя функции выделять память под строки в udf в линуксе. hvlad Ты действительно думаешь, что менеджер памяти в ФБ зависит о того, на чём ты пишешь УДФ ? Укажи точное место в моём посте из которого ты сделал этот вывод. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2014, 11:58:48 |
|
||
|
проблемы переписи с дельфей на с++ под линухом
|
|||
|---|---|---|---|
|
#18+
sydenisТеперь интересно каким менеджером / имя функции выделять память под строки в udf в линуксе. Заглянул хоть в ib_util.h? Это ВСЁ, что нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2014, 12:24:11 |
|
||
|
проблемы переписи с дельфей на с++ под линухом
|
|||
|---|---|---|---|
|
#18+
sydenisУкажи точное место в моём посте из которого ты сделал этот вывод.Я его процитировал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2014, 13:01:09 |
|
||
|
проблемы переписи с дельфей на с++ под линухом
|
|||
|---|---|---|---|
|
#18+
wadmanЗаглянул хоть в ib_util.h? Это ВСЁ, что нужно. ОК нашёл. Он в /usr/include лежит - так сходу фиг догадаешься. Теперь вопрос - каким из строковых типов с++ посоветуете пользоваться? hvlad Я его процитировал Тогда прям по буквам - покажи где там буквы "ФБ" и где там буквы "зависит"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2014, 14:51:15 |
|
||
|
проблемы переписи с дельфей на с++ под линухом
|
|||
|---|---|---|---|
|
#18+
sydenisкаким из строковых типов с++ посоветуете пользоваться? Тот, который поддерживает UTF8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2014, 15:08:39 |
|
||
|
проблемы переписи с дельфей на с++ под линухом
|
|||
|---|---|---|---|
|
#18+
sydenis, Модератор: С посылами завязываем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2014, 16:05:10 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38569654&tid=1563858]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
189ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 192ms |
| total: | 473ms |

| 0 / 0 |
