Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: 6310
Последний выпуск: 19.06.2015

добавление библиотеки lib в проект.

289
09 августа 2012 года
Jeyson
207 / / 20.04.2000
Здравствуйте.
Имеется старенькая, но очень хорошая прога на фортране. Нужно переписать на С++ Builder. Однако возникла проблема: там существует библиотека в которой реализованы разные необходимые функции. Библиотека одним файлом *.lib. Как ее присоединить ума не приложу. Просто добавить в проект не получается. Спасибо.
277
13 августа 2012 года
arrjj
1.7K / / 26.01.2011
лечится - билдером 3-м :) библиотечку придется переписывать.
277
09 августа 2012 года
arrjj
1.7K / / 26.01.2011
должен быть заголовочный файл с описанием функций, подключи его в свой проект и добавь линковку .lib
289
09 августа 2012 года
Jeyson
207 / / 20.04.2000
Цитата: arrjj
должен быть заголовочный файл с описанием функций, подключи его в свой проект и добавь линковку .lib



В том то и дело, что нет ничего кроме файла lib и фортрановских файлов с кодами. Реально ли это вообще. Просто писал библиотеку человек на фортране с которым связь потеряна.

277
09 августа 2012 года
arrjj
1.7K / / 26.01.2011
Опиши прототипы функций и подключи lib и всё.
289
13 августа 2012 года
Jeyson
207 / / 20.04.2000
Цитата: arrjj
Опиши прототипы функций и подключи lib и всё.


Не вышло. Поясню что я сделал.
1. Есть фортрановская библиотека - единственный файл с расширением lib. Ни dll ни h- файлов нет. Просмотрел этот файл через FAR (по F4) и нашел помимо абракадабры название функций вызываемых из основной программы (файлы фортрана for.)
2. В фортрановском файле я нашел тип передаваемых параметров.
3. Добавил в проект C++ Builder данную библиотеку (Менеджер проектов-> Add и т.д.)
4. Написал примитивный код (поскольку значения параметров функция должна менять, то передаем указатели. Хотя передача обычных параметров ошибку оставлят той же самой).

Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include "pre_comp.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

void FUNCTION(int * a,int * b,float * c, float * d ,int * e);
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 FUNCTION(&a, &b, &c, &d , &e);
}
//---------------------------------------------------------------------------
5. Получаю ошибку: [Linker Error] Unresolved external 'FUNCTION(int *, int *, float *, float *, int *)' referenced from C:\USERS\DESKTOP\PROG\UNIT1.OBJ
что как я понимаю свидетельствует о том что не найдено описание данной функции.
Что я еще упустил?
Еще раз повторюсь: есть только один lib файл (ему уже около 20 лет), написан на фортране не знаю какой версии. Его нужно использовать в C++ Builder 6.0.
Спасибо за ответы. Надеюсь разобьем этот вопрос.
289
13 августа 2012 года
Jeyson
207 / / 20.04.2000
Добавил строку в юните #pragma comment(lib,"название_библиотеки.lib")
объявил функцию по другому только в подключаемом мною созданном файле "pre_comp.h":

extern "C" {

void __stdcall FUNCTION(int * ,int * ,float * , float * ,int * );
}

и уже обрадовался, но получил сообщение : [Linker Fatal Error] Fatal: Unsupported 16-bit segment(s) in module function.for
линковщик добрался таки до этой функции которая сидит в фортрановской библиотеке, но обнаружив там 16 битные сегменты послал меня. Что вполне логично (я на 64 битной семерке сижу). Это как-то лечится или оставить надежду?
1
14 августа 2012 года
kot_
7.3K / / 20.01.2000
Камрад arrjj прав.
Прийдется либо переписать библиотечку либо писать собственный загрузчик
289
15 августа 2012 года
Jeyson
207 / / 20.04.2000
Всем спасибо. Буду писать свой расчетник, обходя библиотеки.

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог