ich die Antwort gefunden, wurde der Code vor in Windows laufen, ich zog es auf Linux, die virtuelle Klasse wie
#ifndef _CO_COMMUNICATION_H
#define _CO_COMMUNICATION_H
#include <string>
using namespace std;
class CCommunicationInterface
{
public:
virtual ~CCommunicationInterface()=0;//this is the error
virtual bool Send(const vector<byte>& Data) = 0;
virtual bool Receive(vector<byte> &InBuf) = 0;
virtual bool Open(bool IsBackUpComm, wstring& ErrorMsg) = 0;
virtual bool Close() = 0;
virtual bool IniParam(pointer Param, wstring& ErrorMsg) = 0;
};
typedef CCommunicationInterface* (*PFN_COMMUNICATION_INTERFACE)();
typedef void (*PFN_RELEASE_COMMUNICATION_INTERFACE)(CCommunicationInterface* lpObj);
#endif
dann eine Klasse erstellen, basierend auf CCommunicationInterface in Windows erfolgreich kompilieren können. aber in linux zeigt es den fehler. so änderte ich den Code für dieses `
class CCommunicationInterface
{
public:
virtual ~CCommunicationInterface(){}
virtual bool Send(const vector<byte>& Data) =0;
virtual bool Receive(vector<byte> &InBuf) =0;
virtual bool Open(bool IsBackUpComm, wstring& ErrorMsg) =0;
virtual bool Close()=0;
virtual bool IniParam(pointer Param, wstring& ErrorMsg)=0;
};
dann bekam ich ldd -r lib NoError, der Analytic Funktion Fehler.
Sind Sie sicher, dass die Bibliotheks-Headerdatei, die Sie in Ihre Anwendung aufnehmen, aktuell ist? Vielleicht benutzen Sie eine alte Version von ihnen, oder Sie müssen nur alles säubern und neu aufbauen. – mbjoe
Sorry für eine so lange Zeit, ich versuchte sauber und neu aufzubauen, es zeigt immer noch den gleichen Fehler –