这是基本的,但我有一个带有函数原型的头文件Test.h。然后是一个带有函数定义Test.cpp的源代码文件。最后我有我的Main.cpp文件调用Test.cpp中的函数。问题是我在Main.cpp中收到错误,指出function1未定义。你能看出我做错了吗?
Test.h
int function1(int);
Test.cpp的
#include "Test.h"
#include <iostream>
int main(){
}
int function1(int i){
std::cout << "fuction1(" << i << ")" << std::endl << "Returns: 1" << std::endl;
return 1;
}
Main.cpp的
#include <iostream>
#include "Test.h"
int main(){
function1(5);
}
在我添加main()函数之前,Test.cpp也没有编译。我对java非常流利,这似乎与我的想法相矛盾。在java中,我只有一个main方法可以在我的主类中找到。其他类有一个构造函数。请帮我建立从java到c ++的连接。
答案 0 :(得分:6)
你必须告诉编译器它应该链接什么。
首先,删除main()
中test.cpp
的定义,因为尝试在一个可执行文件中将多个非静态main()
放在全局命名空间中会导致链接错误。
然后,正确使用您的编译器。例如,如果您使用GCC,
g++ -o Main Main.cpp Test.cpp
或
g++ -c -o Main.o Main.cpp
g++ -c -o Test.o Test.cpp
g++ -o Main Main.o test.o