2

这段简单的代码真的让我很难受,所以任何人都可以向我解释一下可能出了什么问题吗?我有一个简单的 cpp 文件,它使用头文件中包含的类。

库文件

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

    test();                                                                                       
    test();                                                                                      
};                                                                                                
}  

库.cxx

#include "lib.h"

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

启动.cpp

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

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

我使用 gcc 版本 4.1.2 20080704 并编译项目

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

得到以下链接器错误

/tmp/ccK2v6GD.o:在函数“主”中:

start.cpp:(.text+0x7a): 未定义对 `tnamespace::test::test()' 的引用

start.cpp:(.text+0x88): 未定义对 `tnamespace::test::~test()' 的引用

collect2: ld 返回 1 个退出状态

我设法找到了解决方案。我忘了编译我的库。正确的 g++ 命令

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

4

1 回答 1

2

您没有 compile lib.cxx,因此不会导出符号。

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