Auslösende Datei ist:
Code:
0:000> lmvm musik_vuplayer
start end module name
01fa0000 01fca000 musik_vuplayer T (no symbols)
Loaded symbol image file: musik_vuplayer.dll
Image path: C:\Programme\TeamSpeak 3 Client\plugins\musik_vuplayer.dll
Image name: musik_vuplayer.dll
Timestamp: Tue Feb 15 06:18:18 2011 (4D5A1AAA)
CheckSum: 00000000
ImageSize: 0002A000
File version: 0.0.0.0
Product version: 0.0.0.0
File flags: 0 (Mask 0)
File
OS: 0 Unknown Base
File type: 0.0 Unknown
File date: 00000000.00000000
Translations: 0000.04b0 0000.04e4 0409.04b0 0409.04e4
Viel mehr kann man schon nicht entnehmen, weil es nur ein Minidump ist (sprich: nicht der komplette Speicherinhalt ist verfügbar)
no symbols....hmm kann es sein das das auf einen nicht zugewissenen pointer hindeutet?...Weil die Anwendung übergibt die pointer zu den Funktionen mit einer exportierten Prozedur. Also in der
DLL muss eine Funktion exportiert werden (was ich aber schon gemacht habe), die nach dem initalisieren der
DLL von der anwendung aufgerufen wird. Diese Prozedur hat eine const parameter, den Record, den ich dann intern in der
DLL speichern muss. Dies sieht dan so aus:
Delphi-Quellcode:
var TS3Func : TTS3Functions; // der Record;
procedure ts3plugin_setFunctionPointers(const funcs : TTS3Functions); cdecl; //der Parameter wird von der Anwendung festgelegt (zumindest sieht es so aus, in dem Originalcode
begin
TS3Func := funcs;
end;
//Und hier der Aufruf
function ts3plugin_onTextMessageEvent(serverConnectionHandlerID : uint64; targetMode : anyID; toID : anyID; fromID : anyID; const fromName : PAnsiChar; const fromUniqueIdentifier : PAnsiChar; const message : PAnsiChar; ffIgnored : Integer) : Integer; cdecl;
begin
if TS3Func.requestSendPrivateTextMsg(serverConnectionHandlerID,'test',fromID,nil) = 0 then
begin
end
end;
Hier der Original Beispielcode aus der .c Datei:
Code:
static struct TS3Functions ts3Functions;
/* Set TeamSpeak 3 callback functions */
void ts3plugin_setFunctionPointers(const struct TS3Functions funcs) {
ts3Functions = funcs;
//Hier die Beispiel funktion in dem gleichen Zusammenhang, wie ich sie auch verwenden will
int ts3plugin_onTextMessageEvent(uint64 serverConnectionHandlerID, anyID targetMode, anyID toID, anyID fromID, const char* fromName, const char* fromUniqueIdentifier, const char* message, int ffIgnored) {
if(ts3Functions.requestSendPrivateTextMsg(serverConnectionHandlerID, "Text message back!", fromID, NULL) != ERROR_ok)
{
}
}
Wie gesagt aufrufen tut er die exportierte funktion, nur beim aufruf der Callback funktionen bekomm ich den fehler rausgeschmiessen (ich ruf ja dafor einmal PostMessage wegen meinem Sinn des Plugins machen. Es kommt auch an und er macht es auch, nur die Funktion will net.
Wenn ich es rauskommentiere gehts. Also auf jedenfall liegt es daran.
EDIT: Liegt es vllt daran? In dem Originalcode steh sowas noch am Anfang:
Code:
#pragma warning (disable : 4100) /* Disable Unreferenced parameter warning */
Dies hab ich zur Sicherheit so gemacht:
(*$HPPEMIT '#pragma warning (disable : 4100)' *) //oder hat das bzw. ist das falsch übersetzt?