2017-04-17 14 views
0

Qt経由でライブラリをコンパイルしましたが、正常にコンパイルされましたが、ライブラリをlddにすると、私はこれを得ました:error: undefined symbol。ほとんどのエラーは私のクラスにリンクされています。dlopenエラー - 未定義のシンボルエラー

解決策はいくつか見つかりましたが、いずれも解決しませんでした。

エラー出力は です。

+0

アプリケーションに含めるライブラリヘッダーファイルが最新の状態になっていますか?古いバージョンのものを使用している場合や、すべてをクリーンアップして再構築する必要がある場合があります。 – mbjoe

+0

あまりにも長い間申し訳ありませんが、私はきれいにして再構築しましたが、それはまだ同じエラーを示しています –

答えて

0

私は答えを見つけたが、コードは、私は、成功したウィンドウにコンパイルすることができますCCommunicationInterfaceに基づいてクラスを作成

#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 

のように、Linuxの仮想クラスを、それを移動し、前のウィンドウで実行されました。 Linuxではエラーを示しています。 ので、私はLDD -r libにNOERROR、 分析関数のエラーを得た後、この `

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; 

    }; 

ためのコードを変更しました。

関連する問題