Skocz do zawartości
Zaloguj się, aby obserwować  
dramcio

[DLL] Python z C++

Polecane posty

Witajcie.

 

Na wstępie panie moderatorze, jeżeli wybrałem zły dział proszę przenieść mój temat - myślałem że ten będzie odpowiedni.

 

------

 

Chcę w grze wykonać funkcje pythona z mojego dll które wstrzykuje.

 

Mój kod :

#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;
}

Gra to METIN2 - tak tak, ale to jedyna gra w która wiem ,że wykorzystuje pythona.

 

1. Dodając py_initalize - następuje crash gry.

2. Jak zmieniam ATTACH na :

case DLL_PROCESS_ATTACH:
MessageBoxA(NULL, (LPCSTR) "WORK!", (LPCSTR) "YES !", NULL);
pickupitem();
break; 

to po wstrzyknięciu otrzymuje napis 2 razy WORK!.

 

Myślę że to jest kwestia konfiguracji mojego środowiska (VISUAL STUDIO).

 

Mimo tego ,że dll kompiluje sie poprawnie (poza wpisami c:/python27/libs do linkera oraz c:/python27/include do compilera nic nie ruszałem)

 

Myślę że tutaj znajdzie się osoba któa będzie wstanie mi pomóc. Bo mi pomysły już się skończyły ;x

(to ,że funkcja player.PickCloseItem istnieje - to nie mam wątpliwośći)

 

Pozdrawiam.

Edytowano przez dramcio (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×