0
Qt経由でライブラリをコンパイルしましたが、正常にコンパイルされましたが、ライブラリをlddにすると、私はこれを得ました:error: undefined symbol
。ほとんどのエラーは私のクラスにリンクされています。dlopenエラー - 未定義のシンボルエラー
解決策はいくつか見つかりましたが、いずれも解決しませんでした。
エラー出力は です。
Qt経由でライブラリをコンパイルしましたが、正常にコンパイルされましたが、ライブラリをlddにすると、私はこれを得ました:error: undefined symbol
。ほとんどのエラーは私のクラスにリンクされています。dlopenエラー - 未定義のシンボルエラー
解決策はいくつか見つかりましたが、いずれも解決しませんでした。
エラー出力は です。
私は答えを見つけたが、コードは、私は、成功したウィンドウにコンパイルすることができます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;
};
ためのコードを変更しました。
アプリケーションに含めるライブラリヘッダーファイルが最新の状態になっていますか?古いバージョンのものを使用している場合や、すべてをクリーンアップして再構築する必要がある場合があります。 – mbjoe
あまりにも長い間申し訳ありませんが、私はきれいにして再構築しましたが、それはまだ同じエラーを示しています –