I call DoString like this:
LuaMgr::Execute(cionst std::string& Code, const std::string& Source = "Foo.lua", void* pState = 0);
I don't bother passing in the LUA state pointer and it works just fine for me. I can call the APIs, get return values, etc etc just fine.