到目前为止,我已经编程了7个小时,因为疲惫而无法看到问题。我需要一些额外的眼睛。
为什么这段代码不能编译???
bool readFromFile(const char*, Graph[5]);
bool writeToFile(Graph[5]);
int main(int argc, char* argv[]) {
.
.
.
Graph graph[5];
if(readFromFile(argv[1], graph) == false){ //read and error check
cout << "Returning from main(). . ." << endl;
return -1;
}
if(writeToFile(graph) == false){
cout << "Returning from main(). . ." << endl;
return -1;
}
return 0;
}
bool writetoFile(Graph graph[5]){
FILE* fp;
fp = fopen("output2.txt","w");
if(fp == NULL){
cout << "Error opening file: output2.txt" << endl;
return false;
}
//count pairs
int pairCount[5] = {0};
fclose(fp);
return true;
}
使用NetBeans,实际上当我按下F9(编译)时,它会编译,但是当我尝试运行时:
g++ -o dist/Debug/GNU-Linux-x86/algorithm_hw1_task2 build/Debug/GNU-Linux-x86/Graph.o build/Debug/GNU-Linux-x86/main.o build/Debug/GNU-Linux-x86/Node.o
build/Debug/GNU-Linux-x86/main.o: In function `main':
/home/varaquilex/NetBeansProjects/algorithm_hw1_task2/main.cpp:40: undefined reference to `writeToFile(Graph*)'
collect2: error: ld returned 1 exit status
make[2]: *** [dist/Debug/GNU-Linux-x86/algorithm_hw1_task2] Error 1
make[2]: Leaving directory `/home/varaquilex/NetBeansProjects/algorithm_hw1_task2'
make[1]: *** [.build-conf] Error 2
make[1]: Leaving directory `/home/varaquilex/NetBeansProjects/algorithm_hw1_task2'
make: *** [.build-impl] Error 2
当我尝试使用g ++进行编译时
/tmp/ccM7A6te.o: In function `main':
main.cpp:(.text+0x187): undefined reference to `writeToFile(Graph*)'
collect2: error: ld returned 1 exit status
注意:我会尽快删除这个问题,感谢您的关注。
答案 0 :(得分:1)
您在原型和代码中命名了函数writeToGraph()
,但是在定义时将其命名为writetoGraph()
(注意大小写的差异)。
因此,它没有链接。
答案 1 :(得分:1)
您在函数定义中输入了错误:writetoFile
而不是writeToFile
。