12.4. Использование библиотек Pascal с программами на С

Вверх  Предыдущий  Следующий

ПРИМЕЧАНИЕ

В примерах этого раздела предполагается использование системы LINUX. Однако аналогичные команды существуют и для других систем.

Вы также можете вызвать библиотеку, сгенерированную Free Pascal из программы, написанной на C:

Листинг: progex/ctest.c

#include <string.h>
 
extern char* SubStr(const char*, int, int);
 
int main()
{
Char* s;
int FromPos, ToPos;
s = strdup("Test");
FromPos = 2;
ToPos = 3;
printf("Result from SubStr : '%s '\n", SubStr(s, FromPos, ToPos));
return 0;
}

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

gcc -o ctest ctest.c –lsubs

при условии, что код находится в файле ctest.c.

Библиотека также может быть загружена динамически из программы C, как показано ниже в примере:

Листинг: progex/ctest2.c

#include <dlfcn.h>
#include <string.h>
 
int main()
{
void *lib;
char *s;
int FromPos, ToPos;
char*(*SubStr)(const char*, int, int);
lib = dlopen("./libsubs.so", RTLD_LAZY);
SubStr = dlsym(lib, "SUBSTR");
s = strdup(" Test ");
FromPos = 2;
ToPos = 3;
printf("Result from SubStr : '%s ' \n", (*SubStr)(s, FromPos, ToPos));
dlclose(lib);
return 0;
}

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

gcc -o ctest2 ctest2.c –ldl

Параметр -ldl говорит gcc, что программе необходима библиотека libdl.so для загрузки динамических библиотек.