私はcで作成した共有オブジェクトライブラリをインポートするためのインポートがあります。それは次のようになります。私のpythonファイルを実行しているとき、私はこのコードを打ったときAttributeError: 'module'オブジェクトには、CコードをPythonにインポートしようとすると属性がありません
status = Cal.Cal_readFile(filename, result)
しかし私が手:
import Cal
私はそのようには次のように共有オブジェクトライブラリとpythonでコールを作ってみますエラー以下:
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.4/tkinter/__init__.py", line 1541, in __call__
return self.func(*args)
File "xcal.py", line 72, in openDialog
status = Cal.Cal_readFile(filename, result)
AttributeError: 'module' object has no attribute 'Cal_readFile'
は、共有オブジェクトライブラリに関する私のmakefileは次のようになります。
#include <python3.4/Python.h>
#include "calutil.h"
PyObject *Cal_readFile(PyObject *self, PyObject *args);
static PyMethodDef CalMethods[] = {
{"readFile", Cal_readFile, METH_VARARGS},
{NULL, NULL}
};
static struct PyModuleDef calModuleDef = {
PyModuleDef_HEAD_INIT,
"Cal", //enable "import Cal"
NULL, //omit module documentation
-1, //don't reinitialize the module
CalMethods //link module name "Cal" to methods table
};
PyMODINIT_FUNC PyInit_Cal(void) {
return PyModule_Create(&calModuleDef);
}
PyObject *Cal_writeFile(PyObject *self, PyObject *args) {
return NULL;
}
注: そして、私のCコードは、次のようになりますCal_writeFile機能は、実際のものは、それで何が起こっているんちょうど私がそれそうISN」として大きな機能を貼り付けたくありませんでしたこれを解決する必要があります。
私がここで間違っていることはありますか?私はPython import Cal
が正しくPythonファイルと同じディレクトリにあるCal.so
という名前の共有オブジェクトライブラリをインポートしているはずです。
感謝します!それは問題を解決し、私ができるようになるとすぐにあなたの答えを受け入れます。 – ComputerLocus
簡単な質問ですが、 'result'変数を変更してそのC関数内のC関数に渡すと、Python変数も同様に変更されますか? – ComputerLocus
@Fogest:それが何を意味するかははっきりしない。いずれにしても、別の質問をしたいのであれば、それは "質問の追加"ボタンではなく、 "質問の質問"ボタンのためのものです。あなたはより多くの可視性を得るでしょう、あなたと潜在的な回答者は詳細やフォーマットオプションなどを追加する余地があります。 – user2357112