2

この単純なコードは本当に苦労するので、誰かが何かをして、何が間違っている可能性があるかを説明してくれませんか?ヘッダーファイルからインクルードされたクラスを使用する単純なcppファイルがあります。

lib.h

namespace tnamespace {    
class base{                                        
    virtual ~base() {};                            
};                                                 
class test/*: public base*/ {                                                                     
    public:                                                                                       

    test();                                                                                       
    test();                                                                                      
};                                                                                                
}  

lib.cxx

#include "lib.h"

namespace tnamespace{                                                                                             
    test::test() {};
    test::~test() {}
}

start.cpp

#include <iostream>
#include <lib.h>

int main() {
    tnamespace::test d;
    return 0;
}

私はgccバージョン4.1.2200080704を使用し、プロジェクトをコンパイルします

g++ start.cpp -I./ext_lib -Wall

次のリンカーエラーが発生しました

/tmp/ccK2v6GD.o:関数 `main'内:

start.cpp:(。text+0x7a): `tnamespace :: test :: test()'への未定義の参照

start.cpp:(。text+0x88): `tnamespace :: test ::〜test()'への未定義の参照

collect2:ldが1つの終了ステータスを返しました

私はなんとか解決策を見つけることができました。libをコンパイルするのを忘れました。適切なg++コマンド

g ++ start.cpp ext_lib / lib.cxx -I./ext_lib -Wall

4

1 に答える 1

2

コンパイルしなかったlib.cxxため、シンボルはエクスポートされません。

g++ start.cpp lib.cxx -I./ext_lib -Wall
于 2012-10-16T10:14:32.447 に答える