Boost C++

ゲームを作るときには、

といったものを、外部データにすることにより開発効率が上がります。
 
ということで、マップデータをCSVにして読み込ませようとしたところ…、
C++って文字列処理がつらいですね、、。
 
何かいいのないかなー、と探していたところ「Boost C++」を発見しました。
 
で色々調べていたところ、boost::pythonなるものが…、、。(←早くも脱線)
 
「おおおー、C++からPythonが呼べるのかー!」
 
「外部スクリプトPythonで書いて、C++から呼べれば開発効率アップだぜ!」
 
と思ったのですが、
主にPythonからC++を呼び出すときに、C++のDLLを簡単に作るためのライブラリらしいです。
(ガックリ)
 
私みたいに、C++からPythonを呼ぼうとする人は少数派らしいです。
 
ただ、同じことを考えている人はいるみたいで。
http://lamoo.s53.xrea.com/diary/diary2003a.html#t20030131b
 
しかし、5時間ぐらい試行錯誤して、この通りにやってもうまくいきませんでした…。
(…無念)
 
とりあえず、直書きのPythonコードを実行するサンプルなどを、、。

#include <iostream>
#include <python.h>
using namespace std;

void main()
{
	// Pythonが始まるよ
	Py_SetProgramName("test.py");
	Py_Initialize();

	try
	{
		PyObject* globals = PyDict_Copy(PyModule_GetDict(PyImport_AddModule("__main__")));

		// Python実行するよ
		PyObject* code = PyRun_String(
			"hello = file('hello.txt', 'w')\n"
			"hello.write('Hello Python!')\n"
			"hello.close()"
			, Py_file_input
			, globals, globals);

		PyDict_Clear(globals);
		Py_DECREF(globals);
		if(code == NULL)
		{
			throw "Pythonの構文が違うよ";
		}
	}
	catch(const char* msg)
	{
		cout << "ERROR :" << msg << endl;
	}
	catch(...)
	{
		cout << "ERROR :なんかのエラー" << endl;
	}
	// Python終わり
	PyErr_Clear();
	Py_Finalize();
}

 
あと、boost::pythonを使わなくても、Pythonのコードを実行できるみたいでした…。