добавление библиотеки lib в проект.
Имеется старенькая, но очень хорошая прога на фортране. Нужно переписать на С++ Builder. Однако возникла проблема: там существует библиотека в которой реализованы разные необходимые функции. Библиотека одним файлом *.lib. Как ее присоединить ума не приложу. Просто добавить в проект не получается. Спасибо.
В том то и дело, что нет ничего кроме файла 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);
}
//---------------------------------------------------------------------------
что как я понимаю свидетельствует о том что не найдено описание данной функции.
Что я еще упустил?
Еще раз повторюсь: есть только один lib файл (ему уже около 20 лет), написан на фортране не знаю какой версии. Его нужно использовать в C++ Builder 6.0.
Спасибо за ответы. Надеюсь разобьем этот вопрос.
объявил функцию по другому только в подключаемом мною созданном файле "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 битной семерке сижу). Это как-то лечится или оставить надежду?
Прийдется либо переписать библиотечку либо писать собственный загрузчик