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:
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;
};
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 ?

Merci d'avance,
André.

PS: Post initialement placé dans sous-forum .net par erreur.