在VC ++中编译查找,但G ++在链接时给出“未定义的引用”问题。

时间:2011-11-10 01:33:06

标签: c++ class

要在Linux中编译,我只运行'g ++ driver.cpp',但在链接时遇到很多问题。

/tmp/ccABk939.o: In function `createCharacter()':
Driver.cpp:(.text+0x112): undefined reference to `Character::Character(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, Class*, int)'
/tmp/ccABk939.o: In function `save(Character*)':
Driver.cpp:(.text+0x1c2): undefined reference to `Character::getName()'
Driver.cpp:(.text+0x2e1): undefined reference to `Character::printSave()'
Driver.cpp:(.text+0x366): undefined reference to `Character::getClass()'
Driver.cpp:(.text+0x37a): undefined reference to `Class::printSave()'
Driver.cpp:(.text+0x3ff): undefined reference to `Character::getWeapon()'
Driver.cpp:(.text+0x417): undefined reference to `Character::getWeapon()'
Driver.cpp:(.text+0x42b): undefined reference to `Weapon::printSave()'
Driver.cpp:(.text+0x4ce): undefined reference to `Character::getArmor()'
Driver.cpp:(.text+0x4e6): undefined reference to `Character::getArmor()'
Driver.cpp:(.text+0x4fa): undefined reference to `Armor::printSave()'
Driver.cpp:(.text+0x59d): undefined reference to `Character::getShield()'

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

如果在Character.cpp中定义了 Character 方法。

   g++ driver.cpp Character.cpp

尽可能多地添加* .cpp到g ++。也许 Class.cpp Armor.cpp 等等

如果在库中定义,则必须use link options to link against it

答案 1 :(得分:1)

g++ x.cpp y.cpp

编译然后将必要的对象和结果链接到可执行文件中。

g++ -c x.cpp y.cpp

仅编译,不链接文件,因此不会创建可执行文件。

g++ x.cpp y.cpp -lmath
如果需要链接,

-l链接库。

除了所有;如果您使用的是Linux,则必须考虑编写MAKEFILE。它一劳永逸地解决了你的问题。