Metin2 - Python Funktionen gehen nicht

10/01/2011 22:32 RandomName42#1
Ich habe eine einfache dll in C++ geschrieben mit dem C++ Builder den hier alle so empfehlen. Der ist auch nicht schlecht, aber ich habe ein Problem.

Ich will zB die Python-Funktion AppendChat aufrufen, das mache ich so:

PHP Code:
void AppendChat(char *msgint mode)
{
    
PyObjectarguments PyTuple_New(2);
    
PyTuple_SetItem(arguments0PyInt_FromLong(mode));
    
PyTuple_SetItem(arguments1PyString_FromString(msg));

    
PyObjectref PyObject_Call(PyObject_GetAttrString(PyImport_ImportModule("chat"), "AppendChat"), argumentsNULL);

    
Py_XDECREF(ref);
    
Py_XDECREF(arguments);



Eigentlich müsste das doch so gehen wenn mans aufruft. Was ich auch noch gemacht habe damit sichs kompilieren lässt.

- Python.h aus dem Python 2.7.2-Verzeichnis includet
- Python27.lib erst von COFF zu OMF konvertiert, weil nur so der C++-Builder sie akzeptiert und habe diese dann zum Projekt hinzugefügt.


Jetzt der Error der beim ausführen der Funktion kommt:
Quote:
Zugriffsverletzung bei Adresse 3A2AF329 in Modul 'PYTHON27.DLL'. Schreiben von Adresse 00000000.

Kann mir pls jemand helfen und sagen wies funktioniert, warscheinlich isses nur ne Kleinigkeit :)
10/01/2011 23:16 Computerfreek#2
Metin2 arbeitet mit Python 2.2
Versuch dein Projekt damit zu erstellen.
10/01/2011 23:37 RandomName42#3
Großes THX, hat tatsächlich geholfen :D:)

Noch ne Frage, weißt du wie man ganz einfach und schnell herausfinden kann, wie man eine Funktion aufrufen muss, damit sie geht?? Also Argumente, ob sie in "net", "chat", oder so ist, wenn man den Namen der Funktion weiß.

Und noch was weiteres kleineres, weißt du vllt warum in VC++ wenn ichs exakt so machen außer dem .lib umwandeln, warum dann immer ganz viele Errors:
Quote:
Nicht aufgelöstes Token, nicht aufgelöstes externes Symbol,...
kommen, das interessiert mich noch.
10/01/2011 23:51 Computerfreek#4
Naja, du solltest die .lib schon linken.
Was für Argumente eine Funktion will kannst du nur rausfinden wenn du sie mit OllyDBG o.ä. debuggst.
10/02/2011 00:11 RandomName42#5
Sie is ja gelinkt, im C++ Builder hats ja exakt so geklappt also daher...
Ich hab sie einfach ins Projekt hinzugefügt und es ging, aber im VS kommen diese errors oO
10/02/2011 13:45 Computerfreek#6
Schreib oben in deinen Code irgendwo mal noch
#pragma comment(lib,"python22") oder je nachdem wie die Lib heißt rein..