powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / UDR на C
25 сообщений из 45, страница 1 из 2
UDR на C
    #35714279
AlexKoe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сам я немного не "в теме", но вот заставили писать расширение для ИДС. Нашел "мануалы", если так можно назвать пол абзаца, Естественно столкнулся с проблемами. В частности, что за расширение *.so. Вопрос идиота - чем можно скомпилировать, чтобы его получить?
...
Рейтинг: 0 / 0
UDR на C
    #35714324
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если все таки удосужитесь назвать версию IDS (вы будете удивлены, но возможности очень сильно зависят от версии) то, возможно, сможем указать "мануалы" в которых значительно больше половины абзаца (кстати, а что это вы почитали ?)
И очень желательно вначале прочитать и придерживаться этого
...
Рейтинг: 0 / 0
UDR на C
    #35714363
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexKoeСам я немного не "в теме", но вот заставили писать расширение для ИДС. Нашел "мануалы", если так можно назвать пол абзаца, Естественно столкнулся с проблемами. В частности, что за расширение *.so. Вопрос идиота - чем можно скомпилировать, чтобы его получить?а что будет делать расширение?

*.so это библиотека под nix типа dll в винде
...
Рейтинг: 0 / 0
UDR на C
    #35714575
AlexKoe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vasilis И очень желательно вначале прочитать и придерживаться этого
Да, извиняюсь. IDS 10.0, стоит на winxp sp2. Это только для проверки.

vasilis а что это вы почитали ?
Например это и это

Журавлев Денис а что будет делать расширение?
Получает строку и флаг, на выходе строка, либо в верхнем регистре, либо в нижнем.

Журавлев Денис *.so это библиотека под nix типа dll в винде
Это я уже понял, теперь ищу способ как скомпилировать под ХР.
...
Рейтинг: 0 / 0
UDR на C
    #35714600
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexKoe
Получает строку и флаг, на выходе строка, либо в верхнем регистре, либо в нижнем.

Код: plaintext
1.
2.
3.
4.
5.
6.
create function mysplfunc(instr nvarchar, flag int) returning nvarchar
 If flag = 1  then 
       return upper(instr);
 else return lower(instr);
 End if;
end function;
...
Рейтинг: 0 / 0
UDR на C
    #35714614
AlexKoe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Журавлев Денис,

Забыл добавить, что входящая строка может состоять из любых символов, в том числе русских. Будет ли сия функция их нормально воспринимать?
...
Рейтинг: 0 / 0
UDR на C
    #35714632
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexKoeЖуравлев Денис,

Забыл добавить, что входящая строка может состоять из любых символов, в том числе русских. Будет ли сия функция их нормально воспринимать?если у человека создавшего базу хватило ума на DB_LOCALE=ru_ru..... то будет.
...
Рейтинг: 0 / 0
UDR на C
    #35714647
AlexKoe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Допустим не хватило? (=
...
Рейтинг: 0 / 0
UDR на C
    #35714680
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexKoeДопустим не хватило? (=а размер базы какой? Есть у меня ощущение что техподдержке это piece of cake.
...
Рейтинг: 0 / 0
UDR на C
    #35714718
AlexKoe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Стоит en_Us
База большая, менять не будут, поэтому и необходим экстеншн.
...
Рейтинг: 0 / 0
UDR на C
    #35714778
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
create function mysplfunc(instr nvarchar, flag int) returning nvarchar
define outstr nvarchar;
SET COLLATION 'ru_ru.1251';  
If flag = 1  then 
         let outstr = upper(instr);
else let outstr = lower(instr);
End if;
SET NO COLLATION;
return outstr;
end function;
...
Рейтинг: 0 / 0
UDR на C
    #35714799
AlexKoe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хм. Посмотрю, попробую.
...
Рейтинг: 0 / 0
UDR на C
    #35714908
AlexKoe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотя все же лучше бы именно экстеншн, ибо задача была поставлена именно такая.
...
Рейтинг: 0 / 0
UDR на C
    #35714926
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexKoeХотя все же лучше бы именно экстеншн, ибо задача была поставлена именно такая.ну так пишите, мы вам не мешаем. Продакшен у вас тоже под winxp?
...
Рейтинг: 0 / 0
UDR на C
    #35717599
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexKoevasilis И очень желательно вначале прочитать и придерживаться этого
Да, извиняюсь. IDS 10.0, стоит на winxp sp2. Это только для проверки.
vasilis а что это вы почитали ?
Например это и это

В первую очередь желательно сначала читать родную документацию.
По вашей версии здесь http://publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp
Выбираете в содержании "Developing" - "Developing Extensions to IDS" - "IBM Informix User-Defined Routines and Data Types Developer's Guide" - и т.д.
...
Рейтинг: 0 / 0
UDR на C
    #35719974
AlexKoe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vasilis,
Читали-читали. Там все это есть, но многое не понятно.

Вот если кто поможет помогите понять как это сделать

ibmTo create a shared-object file on Windows

1. Load the abs.o object file into the abs.so DLL:, as the following example shows:

link /DLL /OUT:abs.dll /DEF:abs.def abs.obj
d:\informix\lib\SAPI.LIB

The preceding command uses the IBM Informix software installed on the d: drive in a directory named informix.
2. Put the DLL in a directory on which user informix has read permission and set the READONLY attribute with the attrib +r command:

attrib
В частности первый пункт.
...
Рейтинг: 0 / 0
UDR на C
    #35720436
AlexKoe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно ли написать обычную dll и использовать ее, если уж сервер на Windows 2003 стоит.
...
Рейтинг: 0 / 0
UDR на C
    #35721384
Sergey L.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexKoeВот если кто поможет помогите понять как это сделать
ibmTo create a shared-object file on Windows
1. Load the abs.o object file into the abs.so DLL:, as the following example shows:
link /DLL /OUT:abs.dll /DEF:abs.def abs.obj
d:\informix\lib\SAPI.LIB
The preceding command uses the IBM Informix software installed on the d: drive in a directory named informix.

В частности первый пункт.

Я так понимаю, что link - это с:\Program Files\Microsoft Visual Studio N\VC\bin\link.exe
А C/C++ компилятор - cl.exe оттуда-же.
...
Рейтинг: 0 / 0
UDR на C
    #35729486
AlexKoe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey L.,

Да нет же, я не об этом.

"Load the abs.o object file into the abs.so DLL"

Вот здесь у меня разрыв подсознания.
...
Рейтинг: 0 / 0
UDR на C
    #35729791
Ikir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexKoeSergey L.,

Да нет же, я не об этом.

"Load the abs.o object file into the abs.so DLL"

Вот здесь у меня разрыв подсознания.

А в чём разрыв то?
Процесс создания UDR на С:
- компилируете(наверно CL) - получаете obj
- линкуете(наверно link) - получаете dll
- создаете CREATE FUNCTION aaaa()
...
EXTERNAL NAME 'место где лежит ваш dll'
LANGUAGE C;
...
Рейтинг: 0 / 0
UDR на C
    #35730918
AlexKoe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ikir
А в чём разрыв то?


into the abs .so DLL

Я, если что, не непроходимо тупой, а студент. Ну, вообще я кажется уже все сообразил. Единственное оставшийся открытым вопрос: код можно писать на подобии этого тупо в блокноте? Компилятор его проглотит? С dll не работал.
...
Рейтинг: 0 / 0
UDR на C
    #35731896
Ikir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexKoe

into the abs .so DLL

Я, если что, не непроходимо тупой, а студент. Ну, вообще я кажется уже все сообразил. Единственное оставшийся открытым вопрос: код можно писать на подобии этого тупо в блокноте? Компилятор его проглотит? С dll не работал.

"Ну мало ли в Бразилии Донов Педров", надо верить строке /OUT:abs.dll .
Писать можно хоть на коленке, но в виндах, раз установлен компилятор, наверно есть красивый IDE, который будет красиво подсказывать, выделять шаблоны и прочие навороты )))))
...
Рейтинг: 0 / 0
UDR на C
    #35735258
AlexKoe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообщем написал dll, даже кажется правильно. Объявил ее create function, вызываю - получаю ошибку 9793.

Find Error-9793 User-defined-routine module load failed.

The following error message appears in the log:

ERROR: Loading Module module_name

A bad external name, missing file, or wrong permissions might cause this error. Log message log_message_number contains the UNIX error number no encountered and the actual module name being used. For C language on UNIX, the following log message might appear:

Error_number: C Language Module module_name can't load error_string

In the error message, error_number is the current UNIX error number, module_name is the module name from the catalog, and error_string is the dlerror() explanation.

Есть подозрение, что не правильно указал где лежит длл.

путь: C:\Program Files\IBM\Informix\lib\testnum.dll

указал
EXTERNAL NAME '/Program Files/IBM/Informix/lib/testnum.dll'
...
Рейтинг: 0 / 0
UDR на C
    #35752538
AlexKoe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну, что никто не может ничего сказать по этому поводу?
...
Рейтинг: 0 / 0
UDR на C
    #35752862
Ikir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А за это время пробовали поменять EXTERNAL NAME на Виндовый вид?
...
Рейтинг: 0 / 0
25 сообщений из 45, страница 1 из 2
Форумы / Informix [игнор отключен] [закрыт для гостей] / UDR на C
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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