Einzelnen Beitrag anzeigen

Benutzerbild von geskill
geskill

Registriert seit: 17. Feb 2007
Ort: NRW
420 Beiträge
 
Delphi 2010 Professional
 
#2

Re: 2 kleine c++ Fragen

  Alt 9. Feb 2010, 16:26
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);
}
Sebastian