On-line: гостей 2. Всего: 2 [подробнее..]
АвторСообщение



Пост 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().
Подскажите, пожалуйста, как правильно указать путь поиска функции в библиотеке. Очень нужно!!!

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 11 [только новые]





Пост N: 103
Зарегистрирован: 10.07.07
ссылка на сообщение  Отправлено: 18.11.10 11:10. Заголовок: Виктор пишет: Подск..


Виктор пишет:

 цитата:
Подскажите, пожалуйста, как правильно указать путь поиска функции в библиотеке.


В xMate Параметры архитектуры->EXE по умолчанию->Добавить и далее указать библиотеку. Это если для всех своих приложений.
Для конкретного проекта Свойства проекта->Добавить опять указать библиотеку. В последнем случае лучше разместить её в папке Lib проекта.


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2
Зарегистрирован: 18.11.10
ссылка на сообщение  Отправлено: 18.11.10 11:13. Заголовок: Дело в том, что я эт..


Дело в том, что я это все делал. Все равно ругается
Unresolved external _HB_FUN_NET_IO referenced from ....convdbf.obj
Может быть как-то в заголовочный файл вынести объявление этой функции или еще как-то... Уже три недели бьюсь над этим, ничего не помогает.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 104
Зарегистрирован: 10.07.07
ссылка на сообщение  Отправлено: 18.11.10 11:44. Заголовок: Виктор пишет: Может..


Виктор пишет:

 цитата:
Может быть как-то в заголовочный файл вынести объявление этой функции или еще как-то


Можно попробовать с помощью REQUEST указать в головном модуле.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 3
Зарегистрирован: 18.11.10
ссылка на сообщение  Отправлено: 18.11.10 11:48. Заголовок: TimTim пишет: Можно..


TimTim пишет:

 цитата:
Можно попробовать с помощью REQUEST указать в головном модуле



А можно подробнее? Где именно указывать, как выглядит синтаксис? Просто я первый раз с этим сталкиваюсь

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1698
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 18.11.10 11:48. Заголовок: Исходный текст этой ..


Исходный текст этой функции, как я понимаю, имеется

Перед перекомпиляцией в этой функции надо сделать некоторые изменения в соответствии с harbour api

К примеру, заголовок функции оформить как

HB_FUNC( NET_IO )

включить
#ifdef __HARBOUR__
#include "hbapi.h"
#endif

обращения к параметрам и возврат результата также сделать по по правилам harbour api


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 4
Зарегистрирован: 18.11.10
ссылка на сообщение  Отправлено: 18.11.10 11:55. Заголовок: Pasha пишет: Исходн..


Pasha пишет:

 цитата:
Исходный текст этой функции, как я понимаю, имеется



Исходный код функции содержится в модуле net_io.c - т.е. сишный модуль. Из него получается на выходе библиотека.
А вот где нужно написать, всё что Вы перечислили - не понял. Если можно, подробнее.
Спасибо за участие


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост 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

лучше всего покажите это модуль, или его фрагмент, чтобы было о чем говорить

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 5
Зарегистрирован: 18.11.10
ссылка на сообщение  Отправлено: 18.11.10 12:23. Заголовок: Pasha пишет: лучше ..


Pasha пишет:

 цитата:
лучше всего покажите это модуль, или его фрагмент, чтобы было о чем говорить



Модуль выглядит примерно так

#include ...
#include ...
int Net_IO() { // Вот эта функция используется в клипперной программе

// здесь код самой функции
return 0;
};

Спасибо: 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

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 78
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 18.11.10 12:34. Заголовок: Может функционал это..


Может функционал этой функции есть в харборе? Не искали?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 6
Зарегистрирован: 18.11.10
ссылка на сообщение  Отправлено: 18.11.10 12:37. Заголовок: AlexMyr пишет: Може..


AlexMyr пишет:

 цитата:
Может функционал этой функции есть в харборе? Не искали?



Нет, функция самописная, причем писалась очень довоно для специфических задач организации.
Попробую сделать что-нибудь, отпишусь

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 306
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет