我有Visual Studio,我尝试在DLL注入游戏中执行Python。
这是我的代码:
#include "windows.h"
#define MS_NO_COREDLL
#include <Python.h>
#include <detours.h>
#include "stdafx.h"
#include <string>
#include <sstream>
#include <iostream>
#include <fcntl.h>
#pragma comment(lib, "detours.lib")
using namespace std;
void pickupitem(){
PyObject* args = PyTuple_New(0);
PyObject* ret = PyObject_Call(PyObject_GetAttrString(PyImport_ImportModule("player"), "PickCloseItem"), args, NULL);
double result = PyFloat_AsDouble(ret);
Py_DECREF(ret);
Py_XDECREF(args);
//return result;
}
BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
pickupitem();
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
它编译了良好
编辑代码并将其更改为:
case DLL_PROCESS_ATTACH:
MessageBoxA(NULL, (LPCSTR) "WORK!", (LPCSTR) "YES !", NULL);
pickupitem();
break;
我看到了2x工作!但是winject仍然返回错误。
我认为这是Visual Studio编译器的错,您能告诉我怎么了吗?
我已经安装了python2.7.6将文件夹/libs添加到链接器中,//包括编译器。
可以调试此DLL,知道问题在哪里?
最好的问候。
如何将呼叫添加到py_initialize()和py_finalize(),请参阅http://docs.python.org/2/c-api/init.html