2017-04-17 3 views
0

Ich habe die Bibliothek über Qt kompiliert, es kompiliert erfolgreich, aber wenn ich die Bibliothek ldd, bekam ich eine dies: error: undefined symbol. Die meisten Fehler sind mit meinen Klassen verknüpft.dlopen Fehler - Undefiniert Symbol Fehler

Ich finde einige Lösungen, aber keine von ihnen hat funktioniert.

Hier ist die Fehlerausgabe: .

+0

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

+0

Sorry für eine so lange Zeit, ich versuchte sauber und neu aufzubauen, es zeigt immer noch den gleichen Fehler –

Antwort

0

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.

Verwandte Themen