回答編集履歴

1

ソースコード全文を掲載

2018/09/21 12:58

投稿

Eki
Eki

スコア429

test CHANGED
@@ -12,15 +12,21 @@
12
12
 
13
13
  ```c
14
14
 
15
+ #include <stdio.h>
16
+
17
+
18
+
15
- // カレントディレクトリをパスに追加する
19
+ #include <Python.h>
20
+
21
+
16
22
 
17
23
  void set_path(void) {
18
24
 
19
- PyObject *sys = PyImport_ImportModule("sys");
25
+ PyObject *sys = PyImport_ImportModule("sys");
20
26
 
21
27
  PyObject *sys_path = PyObject_GetAttrString(sys, "path");
22
28
 
23
- PyObject *dir = PyUnicode_FromString(".");
29
+ PyObject *dir = PyUnicode_FromString(".");
24
30
 
25
31
  PyList_Append(sys_path, dir);
26
32
 
@@ -28,13 +34,17 @@
28
34
 
29
35
 
30
36
 
31
- int main(void)
37
+ int main(void) {
32
38
 
33
- {
39
+ PyObject *pModule, *pTmp;
34
40
 
35
- //
41
+ char *sTmp;
42
+
43
+
36
44
 
37
45
  Py_Initialize();
46
+
47
+
38
48
 
39
49
  /* モジュールをimport */
40
50
 
@@ -44,7 +54,25 @@
44
54
 
45
55
 
46
56
 
57
+ /* pythonで言う pTmp = getattr(pModule, 'func')() みたいな。 */
58
+
59
+ pTmp = PyObject_CallMethod(pModule, "func", NULL);
60
+
61
+
62
+
63
+ /* PyObjectをC言語の型に変換 */
64
+
65
+ PyArg_Parse(pTmp, "s", &sTmp);
66
+
67
+ printf("%s\n", sTmp);
68
+
69
+
70
+
47
- // 以下略
71
+ Py_Finalize();
72
+
73
+
74
+
75
+ return 0;
48
76
 
49
77
  }
50
78