Wenn ich das Plugin unterm C++ Debugger laufen lasse, kommt dieser in das PlugIn, jedoch erstellt er die abgeleitete Klasse von TPlugIn nicht richtig, sodass im Hauptprogramm danach beim Aufruf von GetName eine
AV erscheint. Der boolesche Rückgabewert ist immer entsprechend meiner Angabe.
Ich glaube mit Sternchen also Pointer ist es besser. Bei Klassen wird meine ich sowieso generell die Referenz mitgegeben.
Code:
bool LoadPlugIn(TPlugIn *PlugIn)
Aber trotzdem muss irgendwas noch falsch sein - oder sind Klassen inkompatibel ???
Hier ist die nur im Plugin genutzte von TPlugin abgelittene TMyPlugIn Klasse
Code:
#pragma once
#include "tplugin.h"
class TMyPlugIn :
public TPlugIn
{
public:
TMyPlugIn(void);
//~TMyPlugIn(void);
virtual void _stdcall GetName(LPWSTR* result);
virtual void _stdcall GetParentClassName(LPWSTR* result);
};
Code:
LPWSTR ConvertToLPWSTR( const std::string& s )
{
LPWSTR ws = new wchar_t[s.size()+1]; // +1 for zero at the end
copy( s.begin(), s.end(), ws );
ws[s.size()] = 0; // zero at the end
return ws;
}
TMyPlugIn::TMyPlugIn(void)
{
}
/*
TMyPlugIn::~TMyPlugIn(void)
{
}
*/
void _stdcall TMyPlugIn::GetName(LPWSTR* result)
{
string s1 = "PluginName";
*result = ConvertToLPWSTR(s1);
}
void _stdcall TMyPlugIn::GetParentClassName(LPWSTR* result)
{
string s1 = "TMyPlugIn";
*result = ConvertToLPWSTR(s1);
}