Hello,
Je cherche a faire la chose suivante, cela pourra certainement sembler bizarre mais bon, j'expliquerai plus tard le but:-)
Voici le test case:
J'ai un module en c sous linux
Compilation
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 #include <stdio.h> int gValue = 0; void setval(int val) { gValue = val; } int getval(void) { return (gValue); } int *getadrval(void) { return &gValue; } int getvalfromadr (int *adr) { return (*adr); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 [oracle@server1 ~]$ gcc -fPIC -c test.c [oracle@server1 ~]$ gcc -shared -o test.so test.o
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 create or replace library c_test as '/home/oracle/test.so'; /
Traitement souhaité:
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 create or replace procedure setval(val int) is external library sys.c_test name "setval" language C calling standard C; / create or replace function getval return int is external library sys.c_test name "getval" language C calling standard C; / create or replace function getvalfromadr (adr XXXX) return int is external library sys.c_test name "getvalfromadr" language C calling standard C; / create or replace function getadrval return XXXX is external library sys.c_test name "getadrval" language C calling standard C; /
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 set serveroutput on declare rc pls_integer; adr binary_integer; begin setval (10); -- affectation de la valeur 10 rc := getval; -- récupération de l avaleur dbms_output.put_line( 'rc='||rc); adr := getadrval; -- récupération de ladresse de la variable globale rc := getvalfromadr (adr);-- récupération de la valeur à l'adresse de la variable globale dbms_output.put_line( 'rc='||rc); end; /
Je n'arrive pas à récupérer le pointeur int*.
Problème de typage?
Merci de votre aide
jko
Partager