DLL(C )视觉工作室中的Python

Python in DLL (c++) Visual studio

本文关键字:Python 工作室 视觉 DLL      更新时间:2023-10-16

我有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