15

私はpythonの初心者なので、これはばかげた質問かもしれません。Pythonスクリプトが埋め込まれた単純なCプログラムを書きたいです。私は2つのファイルを持っています:

call-function.c:

    #include <Python.h>
    int main(int argc, char *argv[])
    {
        PyObject *pName, *pModule, *pDict, *pFunc, *pValue;

        if (argc < 3)
        {
            printf("Usage: exe_name python_source function_name\n");
            return 1;
            }

        // Initialize the Python Interpreter
        Py_Initialize();

        // Build the name object
        if ((pName = PyString_FromString(argv[1])) == NULL) {
            printf("Error: PyString_FromString\n");
            return -1;
        }

        // Load the module object
        if ((pModule = PyImport_Import(pName)) == NULL) {
            printf("Error: PyImport_Import\n");
            return -1;
        }

        // pDict is a borrowed reference 
        if ((pDict = PyModule_GetDict(pModule))==NULL) {
            printf("Error: PyModule_GetDict\n");
            return -1;
        }
...

こんにちは。

def hello():
    print ("Hello, World!")

これを次のようにコンパイルして実行します。

gcc -g -o call-function call-function.c -I/usr/include/python2.6 -lpython2.6
./call-function hello.py hello

そしてこれを持っています:

Error: PyImport_Import

つまり、PyImport_Import は を返しますNULL。この問題で私を助けてもらえますか? どんな助けでも大歓迎です。

幸運をお祈りしています、

アレックス

4

4 に答える 4

6

しばらく苦労した後もこの問題に遭遇しました.Webを検索した後、システムパスの問題であることがわかりました。Py_Initialize(); の後に 2 行を追加した後。出来た。

OS: Windows 7、コンパイラ: Embarcadero C++ Builder XE6、Python: バージョン 2.7

参考:C++ with Python

Py_Initialize();
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append(\"C:\\Python27\")");
于 2015-11-05T22:06:25.480 に答える