У меня есть Visual Studio, я пытаюсь выполнить Python в игре с помощью DLL инъекции.
это мой код:
#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;
}
Он хорошо компилируется, но мой «Winject» (программа для внедрения DLL) получил ошибку, которая ничего не говорит о проблеме.
Когда я редактирую свой код и меняю его на:
case DLL_PROCESS_ATTACH:
MessageBoxA(NULL, (LPCSTR) "WORK!", (LPCSTR) "YES !", NULL);
pickupitem();
break;
Я видел 2x РАБОТА! но winject по-прежнему возвращает ошибку.
Я думаю, что это вина компилятора Visual Studio, не могли бы вы сказать мне, что не так?
Я установил python2.7.6 добавить папку / libs для компоновщика и / include для компилятора.
Можно отладить эту dll, и знать, где проблема?
С уважением.
как насчет добавления вызова Py_Initialize () и Py_Finalize (), см.
http://docs.python.org/2/c-api/init.html
Других решений пока нет …