Автор | Сообщение |
|
| |
Пост N: 1
Зарегистрирован: 18.11.10
|
|
Отправлено: 18.11.10 10:23. Заголовок: Я новичок, нужна помощь
Есть клипперное приложение, которое использует сишную функцию из библиотеки lib. Библиотека 16-разрядная. Я ее перекомпилировал под win32 приложение, т.е. по идее она уже 32-разрядная. Когда я с помощью xMate + xHarbour пытаюсь создать из 16-разрядного клипперного приложения 32-разрядное, у меня ругается на то, что не может обнаружить функцию _HB_FUN_NET_IO. Unresolved external _HB_FUN_NET_IO referenced from ....convdbf.obj. Сама функция в библиотеке называется net_io(). Подскажите, пожалуйста, как правильно указать путь поиска функции в библиотеке. Очень нужно!!!
|
|
|
Ответов - 11
[только новые]
|
|
|
| |
Пост N: 103
Зарегистрирован: 10.07.07
|
|
Отправлено: 18.11.10 11:10. Заголовок: Виктор пишет: Подск..
Виктор пишет: цитата: | Подскажите, пожалуйста, как правильно указать путь поиска функции в библиотеке. |
| В xMate Параметры архитектуры->EXE по умолчанию->Добавить и далее указать библиотеку. Это если для всех своих приложений. Для конкретного проекта Свойства проекта->Добавить опять указать библиотеку. В последнем случае лучше разместить её в папке Lib проекта.
|
|
|
|
| |
Пост N: 2
Зарегистрирован: 18.11.10
|
|
Отправлено: 18.11.10 11:13. Заголовок: Дело в том, что я эт..
Дело в том, что я это все делал. Все равно ругается Unresolved external _HB_FUN_NET_IO referenced from ....convdbf.obj Может быть как-то в заголовочный файл вынести объявление этой функции или еще как-то... Уже три недели бьюсь над этим, ничего не помогает.
|
|
|
|
| |
Пост N: 104
Зарегистрирован: 10.07.07
|
|
Отправлено: 18.11.10 11:44. Заголовок: Виктор пишет: Может..
Виктор пишет: цитата: | Может быть как-то в заголовочный файл вынести объявление этой функции или еще как-то |
| Можно попробовать с помощью REQUEST указать в головном модуле.
|
|
|
|
| |
Пост N: 3
Зарегистрирован: 18.11.10
|
|
Отправлено: 18.11.10 11:48. Заголовок: TimTim пишет: Можно..
TimTim пишет: цитата: | Можно попробовать с помощью REQUEST указать в головном модуле |
| А можно подробнее? Где именно указывать, как выглядит синтаксис? Просто я первый раз с этим сталкиваюсь
|
|
|
|
| Администратор
|
Пост N: 1698
Зарегистрирован: 23.05.05
|
|
Отправлено: 18.11.10 11:48. Заголовок: Исходный текст этой ..
Исходный текст этой функции, как я понимаю, имеется Перед перекомпиляцией в этой функции надо сделать некоторые изменения в соответствии с harbour api К примеру, заголовок функции оформить как HB_FUNC( NET_IO ) включить #ifdef __HARBOUR__ #include "hbapi.h" #endif обращения к параметрам и возврат результата также сделать по по правилам harbour api
|
|
|
|
| |
Пост N: 4
Зарегистрирован: 18.11.10
|
|
Отправлено: 18.11.10 11:55. Заголовок: Pasha пишет: Исходн..
Pasha пишет: цитата: | Исходный текст этой функции, как я понимаю, имеется |
| Исходный код функции содержится в модуле net_io.c - т.е. сишный модуль. Из него получается на выходе библиотека. А вот где нужно написать, всё что Вы перечислили - не понял. Если можно, подробнее. Спасибо за участие
|
|
|
|
| Администратор
|
Пост N: 1699
Зарегистрирован: 23.05.05
|
|
Отправлено: 18.11.10 12:11. Заголовок: В модуле net_io.c ск..
В модуле net_io.c скорее всего есть определение: CLIPPER NET_IO( PARAMS ) его надо заменить на #ifdef __HARBOUR__ HB_FUNC( NET_IO ) #else CLIPPER NET_IO( PARAMS ) #endif лучше всего покажите это модуль, или его фрагмент, чтобы было о чем говорить
|
|
|
|
| |
Пост N: 5
Зарегистрирован: 18.11.10
|
|
Отправлено: 18.11.10 12:23. Заголовок: Pasha пишет: лучше ..
Pasha пишет: цитата: | лучше всего покажите это модуль, или его фрагмент, чтобы было о чем говорить |
| Модуль выглядит примерно так #include ... #include ... int Net_IO() { // Вот эта функция используется в клипперной программе // здесь код самой функции return 0; };
|
|
|
|
| Администратор
|
Пост N: 1700
Зарегистрирован: 23.05.05
|
|
Отправлено: 18.11.10 12:32. Заголовок: А как она вызывается..
А как она вызывается из клиппера ? При таком определении ее нельзя ни вызвать, ни получить ее результат Где-то на сишном уровне должна быть обертка Net_IO Если эта функция не принимает параметры и не возвращает результат, то можно просто добавить #include "hbapi.h" заменить int Net_IO() на HB_FUNC( NET_IO ) заменить return 0; на return; и при компиляции дать доступ к harbour\include
|
|
|
|
| |
Пост N: 78
Зарегистрирован: 11.06.10
|
|
Отправлено: 18.11.10 12:34. Заголовок: Может функционал это..
Может функционал этой функции есть в харборе? Не искали?
|
|
|
|
| |
Пост N: 6
Зарегистрирован: 18.11.10
|
|
Отправлено: 18.11.10 12:37. Заголовок: AlexMyr пишет: Може..
AlexMyr пишет: цитата: | Может функционал этой функции есть в харборе? Не искали? |
| Нет, функция самописная, причем писалась очень довоно для специфических задач организации. Попробую сделать что-нибудь, отпишусь
|
|
|
|