#include <Windows.h>
#include "Lua/Interface.h"
#include "icvar.h"
#include "ILuaShared.h"
#include "lua_shared.h"
using namespace GarrysMod::Lua;
GMOD_MODULE_OPEN()
{
ILuaShared* shared;
CreateInterfaceFn factory = Sys_GetFactory("lua_shared.dll");
shared = (ILuaShared*)factory(GMOD_LUASHARED_INTERFACE, NULL);
ILuaInterface* iface = shared->GetLuaInterface(State::SERVER);
lua_State* istate = iface->GetLuaState(); // Crashes here
return 0;
}
GMOD_MODULE_CLOSE()
{
return 0;
}
#include <Windows.h>
#include "Lua/Interface.h"
#include "icvar.h"
#include "ILuaShared.h"
#include "lua_shared.h"
using namespace GarrysMod::Lua;
GMOD_MODULE_OPEN()
{
luaL_dostring(state, "print(1)");
return 0;
}
GMOD_MODULE_CLOSE()
{
return 0;
}
class ILuaInterface
{
public:
void *vtable;
public:
lua_State *L;
};

namespace GarrysMod
{
namespace Lua
{
class ILuaInterface
{
public:
void *vtable;
public:
lua_State* state;
};
}
}
#include <Windows.h>
#include "Lua/Interface.h"
#include "icvar.h"
#include "ILuaShared.h"
#include "lua_shared.h"
using namespace GarrysMod::Lua;
void Initialize()
{
ILuaShared* shared;
CreateInterfaceFn factory = Sys_GetFactory("lua_shared.dll");
shared = (ILuaShared*)factory(GMOD_LUASHARED_INTERFACE, NULL);
lua_State* state = shared->GetLuaInterface(State::SERVER)->state;
luaL_dostring(state, "print(1)");
}
BOOL APIENTRY DllMain(HANDLE hModule, DWORD Reason, LPVOID lpReserved)
{
if (Reason == DLL_PROCESS_ATTACH)
{
Initialize();
return TRUE;
}
}