感谢您的帮助。我联系了我的讲师并正在与他合作寻求解决方案。再次感谢你。
对于一个小项目,我们需要进行连接四场比赛。我们的项目分为几个部分,每周我们都会分配不同的部分来处理。
本周我们必须完成对列的工作,我的意思是我们必须使用一个名为get_column
的函数,并使用它来读取用户的有效列号,下一篇文章将在玩了。
因此我们提供了以下文件connect4.h
(用于存储函数的文件),week8_object.o
(忽略名称仅仅是当前的sem周),week8.c
是{我正在编辑的文件。
到目前为止,我有以下内容,但是当我去检查程序是否工作到目前为止,我在编译器中遇到错误:
" ld:警告:忽略文件week8_object.o,文件是为...而构建的 不支持的文件格式(0x7F 0x45 0x4C 0x46 0x01 0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00)这不是架构 被链接(x86_64):week8_object.o未定义的符号 体系结构x86_64:" _main",引自: 主要可执行文件的隐式输入/启动ld:找不到架构x86_64 clang的符号:错误:链接器命令失败并退出 代码1(使用-v查看调用)"
我用来编译的代码是:gcc week8.c week8_object.o
我的代码:
#include <stdio.h>
#include "connect4.h"
/* get_move
Prompts the user to enter a column, then checks that
- the column is in the valid range (1-COLS)
- that the column is not full (use function column_full to check)
If an invalid column is entered, the user is reprompted until it is valid
Returns the column number between 1 and COLS
*/
int get_move ( int board[COLS][ROWS] ){
int col;
printf("Please enter a column number:");
scanf("%d",&col);
if(col<0 && col<=COLS){
printf("Your token has been placed");
}
else{
printf("Your token has not been placed");
}
return(0);
}
标题文件:
#ifndef CONNECT4_H
#define CONNEXT4_H 1
#define ROWS 6
#define COLS 7
// displays the board to the screen
int display_board ( int[COLS][ROWS] ) ;
// sets up the board to an empty state
int setup_board ( int[COLS][ROWS] ) ;
// Returns TRUE if the specified column in the board is completely full
// FALSE otherwise
// col should be between 1 and COLS
int column_full ( int[COLS][ROWS], int col ) ;
// prompts the user to enter a move, and checks that it is valid
// for the supplied board and board size
// Returns the column that the user has entered, once it is valid (1-COLS)
int get_move ( int[COLS][ROWS] ) ;
// adds a token of the given value (1 or 2) to the board at the
// given column (col between 1 and COLS inclusive)
// Returns 0 if successful, -1 otherwise
int add_move ( int b[COLS][ROWS], int col, int colour ) ;
// determines who (if anybody) has won. Returns the player id of the
// winner, otherwise 0
int winner ( int[COLS][ROWS] ) ;
// determines if the board is completely full or not
int board_full ( int[COLS][ROWS] ) ;
#endif
我不知道如何添加目标文件代码,因为我不知道如何打开它。到目前为止,我的代码只是打印语句,如果用户在这些限制内输入的值。我还没有添加任何东西来检查列是否已满,请不要误解。我只是一步一步地检查。
答案 0 :(得分:0)
根据快速谷歌搜索,这意味着您的目标文件是ELF格式,这基本上意味着它是为Linux构建的。 Mac OS不使用ELF,因此您无法链接该文件。
您的选择是:
week8_object.o
的人为Mac编译版本。