Другие языки программирования и технологии

Как в C++ Builder 6 произвести ипорт процедуры Dll?

Есть Dll библиотека в каторой находиться нужная мне процедура, ни каких дополнительных файлов к ней нет, чисто Dll. Как в С++ произвести вызов процедуры из этой Dll?
Привет.
Есть 2 способа загрузки DLL: динамическая, статическая загрузка.
Со статической я помню возился, что-то нахимичено.. . А динамическая загрузка вот, например (выкладываю весь текст заголовочного файла, попробуйте разобраться).. .
п. с. Погуглите, по теме загрузки DLL просто МОРЕ инфы.

#include <windows.hpp>

const PChar CAL32_LIB = "Calibration32.dll";

#pragma pack(push, 1)
typedef struct
{
char about[256];
char type[256];
int version;
TDateTime date;
} tagCALIBRATIONINFO;
#pragma pack(pop)

HINSTANCE lib = NULL;

bool (__stdcall *calibration_free)(int index) = NULL;
bool (__stdcall *calibration_load)(int index, PChar file_name) = NULL;
bool (__stdcall *calibration_calc)(int index, double pix, double line, PDouble x, PDouble y, PDouble z) = NULL;
bool (__stdcall *calibration_calc_points)(int index, Pointer point, int count) = NULL;
bool (__stdcall *calibration_info)(int index, tagCALIBRATIONINFO * info) = NULL;

void calibration_lib_free()
{
if (lib)
FreeLibrary(lib);
lib = NULL;
calibration_free = NULL;
calibration_load = NULL;
calibration_calc = NULL;
calibration_calc_points = NULL;
calibration_info = NULL;
};

bool calibration_lib_init()
{
lib = LoadLibraryA(CAL32_LIB);
if (!lib) return false;
calibration_free = (bool (__stdcall *)(int))GetProcAddress(lib, "CalibrationFree");
calibration_load = (bool (__stdcall *)(int, PChar))GetProcAddress(lib, "CalibrationLoad");
calibration_calc = (bool (__stdcall *)(int, double, double, PDouble, PDouble, PDouble))GetProcAddress(lib, "CalibrationCalc");
calibration_calc_points = (bool (__stdcall *)(int, Pointer, int))GetProcAddress(lib, "CalibrationCalcPoints");
calibration_info = (bool (__stdcall *)(int, tagCALIBRATIONINFO *))GetProcAddress(lib, "CalibrationInfo");
bool done = (calibration_free && calibration_load && calibration_calc && calibration_calc_points && calibration_info);
if (!done) calibration_lib_free();
return done;
};
Арсений Анатольевич
Арсений Анатольевич
4 747
Лучший ответ
Арсений Анатольевич Сишка просто адски неудобно работает с прототипами функций... Возможно можно было описать и проще, но я не на сях программирую, так чо...