質問編集履歴

1

情報の追加

2018/05/13 02:16

投稿

Reach
Reach

スコア735

test CHANGED
File without changes
test CHANGED
@@ -31,3 +31,153 @@
31
31
 
32
32
 
33
33
  また 上記方法は Pythonが ない環境で 動作させることは 可能でしょうか?
34
+
35
+
36
+
37
+ 追記:
38
+
39
+ 環境
40
+
41
+ python 3.5.3 (Version)
42
+
43
+ Windows 7 64bit
44
+
45
+
46
+
47
+
48
+
49
+ 試したコード
50
+
51
+
52
+
53
+ ```c++
54
+
55
+ #include<stdio.h>
56
+
57
+ #include<Python.h>
58
+
59
+ #include<string>
60
+
61
+ #include<iostream>
62
+
63
+
64
+
65
+
66
+
67
+ int main(){
68
+
69
+ PyObject *pName,*pModule, *pTmp, *pFunc;
70
+
71
+ PyObject *pArgs, *pValue;
72
+
73
+ double res_data;
74
+
75
+ double a = 10.5;
76
+
77
+
78
+
79
+ //最初に必ず入れる
80
+
81
+ Py_Initialize();
82
+
83
+
84
+
85
+ //カレントディレクトリを探す範囲にいれる-------------------------
86
+
87
+ PyObject *sys = PyImport_ImportModule("sys");
88
+
89
+ PyObject *path = PyObject_GetAttrString(sys, "path");
90
+
91
+ PyList_Append(path,PyUnicode_DecodeFSDefault("."));
92
+
93
+ //---------------------------------------------------------------
94
+
95
+
96
+
97
+ //探すファイルをしてい-------------------------------------------
98
+
99
+ pName = PyUnicode_DecodeFSDefault("py_test2");
100
+
101
+ pModule = PyImport_Import(pName);
102
+
103
+ Py_DECREF(pName);
104
+
105
+ //---------------------------------------------------------------
106
+
107
+
108
+
109
+ //タプルの作成 -----------------------------------------------
110
+
111
+ pArgs = PyTuple_New(1);//タプルを新しく作成する
112
+
113
+ pValue = PyFloat_FromDouble(a);//pValueにaの数値を設定
114
+
115
+ PyTuple_SetItem(pArgs,0,pValue);//タプルの0の位置にpValueを設定
116
+
117
+ //---------------------------------------------------------------
118
+
119
+
120
+
121
+ if(pModule != NULL){
122
+
123
+
124
+
125
+ //pFuncに今回呼び出す関数を設定する(今回はfunc)
126
+
127
+ pFunc = PyObject_GetAttrString(pModule, "func");
128
+
129
+
130
+
131
+ //pFuncを引数を与える(pArgsはタプルでなければならない)
132
+
133
+ pTmp = PyObject_CallObject(pFunc, pArgs);
134
+
135
+
136
+
137
+ //関数を実行 d:double型を受け取る
138
+
139
+ PyArg_Parse(pTmp, "d", &res_data);
140
+
141
+ printf("%f\n",res_data);
142
+
143
+ }
144
+
145
+ //最後に必ず入れる
146
+
147
+ Py_Finalize();
148
+
149
+
150
+
151
+ return 0;
152
+
153
+ }
154
+
155
+ ```
156
+
157
+
158
+
159
+ ```Python
160
+
161
+ #py_test2.py
162
+
163
+
164
+
165
+ import random
166
+
167
+ def func(data):
168
+
169
+ print("hogehoge")
170
+
171
+ a = data
172
+
173
+ print(a)
174
+
175
+ list_data = [14,2,3.5,28]
176
+
177
+ list_data.append(a)
178
+
179
+ b = random.choice(list_data)
180
+
181
+ return b
182
+
183
+ ```