[英]C++ strange behaviour
我至少對C ++很新。 但是,我無法在任何地方找到這個具體問題的答案。
這也不是特定於代碼的,因為我嘗試下載大量代碼並通過g ++編譯或只是make。
似乎每當我在main()
包含一個類頭時,它都會拋出鏈接器錯誤:
Undefined symbols for architecture x86_64:
"House::getNumBath()", referenced from:
printHouse(House) in houses-91268b.o
"House::getSqft()", referenced from:
printHouse(House) in houses-91268b.o
"House::getColor()", referenced from:
printHouse(House) in houses-91268b.o
"House::House(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int, int, double)", referenced from:
_main in houses-91268b.o
"House::House()", referenced from:
_main in houses-91268b.o
"House::~House()", referenced from:
_main in houses-91268b.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
無論我下載或生成什么代碼,它都會發生,並且似乎與實現為MyClass :: MyClass(/ * args * /)的構造函數有關;
有人建議我應該在我的main
包含.cpp
文件而不是.h
文件,是的, 它可以工作 。 但這是非常錯誤的,因為我一直被教導接口是有意義的。 否則他們的目的是什么?
隨着另一個人的建議(谷歌搜索),我現在正在下載價值10GB的Xcode,並希望它有所幫助。 看起來似乎還不行。 這里的C ++有什么問題? 我出於某種原因缺少C ++ 11(同樣,為什么在相對較新的操作系統?)?
更新:
我抓住了另一個教程中的代碼,它引發了我同樣的事情:
dog.cc
#include "Dog.h"
Dog::Dog() {
}
dog.h
#ifndef DOG_H
#define DOG_H
class Dog {
public:
Dog();
protected:
private:
};
#endif
main.cc
#include "Dog.h"
int main() {
Dog barky;
return 0;
}
在我做完之后拋出兩個相同的東西(它們在同一個文件夾中,那些):
g++ main.cc
要么
make ./main
這可能是我想嘗試的最簡單的例子,因為在C之前我從來沒有像這樣的問題,要么使用Makefile
,要么只使用cc
文件。
您需要首先編譯對象(dog.o)文件:
g++ -c dog.cc
然后用它編譯main:
g++ main.cc dog.o
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.