Bonjour à tous,
J'ai écrit une fonction en C. Je souhaite maintenant pouvoir exporter cette fonction afin de pouvoir l'appeler depuis une autre programme écrit en Pascal.
Je ne connais pas du tout C, et je n'ai donc aucune idée de la structure que doit avoir mon programme C.
A ce stade, il compile et génère un exécutable (unix car je travaille sous Mac OS X). Dans mon programme Pascal, cet exécutable est bien trouvé lors du linkage. En revanche, si j'appelle ma fonction depuis mon programme Pascal, le compilateur renvoie cette erreur:
Undefined symbols:
"_GetBSDProcessListSimple", referenced from: _PC_GETPROCESS$TSTRINGLIST$$LONGINT in PC.o
Voici le code si cela peut aider:
Comment déclarer proprement la fonction GetBSDProcessListSimple pour que je puisse l'importer depuis un autre programme (C ou Pascal) sachant que je souhaite que le linkage soit statique ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 #include "mnifun.h" #include <assert.h> #include <errno.h> #include <stdbool.h> #include <stdlib.h> #include <stdio.h> #include <sys/sysctl.h> typedef struct { pid_t p_pid; /* Process identifier. */ char p_comm[128]; } procsimple; typedef struct kinfo_proc kinfo_proc; class TestLib { public: int (procsimple ** proclistsimple, size_t *procCount); }; int GetBSDProcessListSimple(procsimple ** proclistsimple, size_t *procCount) { int err, i, j; kinfo_proc * process; size_t ProcCount; err = GetBSDProcessList(&process, &ProcCount); *proclistsimple = (procsimple*)malloc(ProcCount * sizeof(procsimple)); for (i=0; i< ProcCount; i++) { (*proclistsimple)[i].p_pid = process[i].kp_proc.p_pid; for (j=0; j<MAXCOMLEN+1; j++) { (*proclistsimple)[i].p_comm[j] = process[i].kp_proc.p_comm[j]; } } free(process); return err; };
Merci d'avance,
André.
PS: Post initialement placé dans sous-forum .net par erreur.
Partager