En Tue, 13 Oct 2009 18:08:53 -0300, Christopher Lloyd <ll...@btinternet.com> escribió:

#include <iostream>
#include <string>
#include "Python.h"

int main()
{
    std::cout << "Starting Python Demo Test" << std::endl;

    Py_Initialize();                // initialize python

    std::string str;
    std::getline( std::cin, str );
    while( str != "end" )
    {
        PyRun_SimpleString( const_cast<char*>( str.c_str() ) );
        std::getline( std::cin, str );
    }

    Py_Finalize();                  // shut down python
        std::cout << "Demo Complete!" << std::endl;
        return 0;
}

If I try to compile this in MS Visual C++ 2008 (debug mode), I get the following error:

LINK : fatal error LNK1104: cannot open file 'python26_d.lib'

For a debug build of your program, you require a debug build of Python. A release build should compile and link OK with the pre-built Python libraries you got, as you already noticed.

So, what happens if I try compiling the above C++ in release mode? Actually, nothing - It compiles just fine. However, upon running the resulting program, my command line box displays the following:

  Starting Python Demo Test

That's all. The program has hung halfway through and the test isn't completed.

Hung? Or waiting for you to input some Python expression to be evaluated?
That's what the std::getline( std::cin, str ) line does. Type 2+3 for example - you should get the answer.

It's been suggested that I replace the first part of my C++ code with the following, and then try to compile in release mode:

#ifdef _DEBUG
#undef _DEBUG
#include <Python.h>
#define _DEBUG
#else
#include <Python.h>
#endif

No, don't do that. Just compile your application in release mode.

--
Gabriel Genellina

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to