gpt4 book ai didi

c++ - 编译多个文件的问题

转载 作者:行者123 更新时间:2023-11-30 00:47:44 25 4
gpt4 key购买 nike

所以我正在尝试编写一些代码来处理数独游戏,但在尝试编译时我总是遇到错误,每次编译都会删除驱动程序。

驱动代码如下:

/*
* Jared C
* C++ Project
*/
#include <iostream>
#include "SudokuBoard.h"

using namespace std;

int main()
{
SudokuBoard board("sudoku.txt");
board.printBoard();
}

这是头文件

/*
* Jared C
* SudokuBoard.h
*/

#ifndef __SUDOKUBOARD_H_INCLUDED__
#define __SUDOKUBOARD_H_INCLUDED__

#include <iostream>
#include <string>

class SudokuBoard
{
private:
int content[9][9];

public:
SudokuBoard(std::string filename);
void printBoard();
int getNumAt(int, int);
void setNumAt(int, int, int);
};

#endif

最后是 Sudoku Board.cpp

/*
* Jared C
* SudokuBoard.cpp
*/

#include <iostream>
#include <fstream>
#include "stdlib.h"
#include "SudokuBoard.h"


using namespace std;

SudokuBoard::SudokuBoard(string filename)
{
string output;
string line;
int count = 0;
ifstream file;
file.open(filename.c_str());
if (file.is_open())
{
while (getline (file, line))
{
output += line;
}
file.close();
}
else cout<< "unable to open file" << endl;
for(int y = 0; y < 9; y++)
{
for(int x = 0; x < 9; x++)
{
content[x][y] = atoi(output.substr(count,1).c_str());
count ++;
}
}
}

void SudokuBoard::printBoard()
{
string output = "\n";

for(int y = 0; y < 9; y++)
{
if(y%3==0)
{
output += '\n';
}
for(int x = 0; x < 9; x++)
{
if(x%3==0)
{
output += " ";
}
output += content[x][y];
output += "\n";
}
}
cout<<output<<endl;
}

int SudokuBoard::getNumAt(int x, int y)
{
return content[x][y];
}

void SudokuBoard::setNumAt(int x, int y, int value)
{
content[x][y] = value;
}

当我调用 gcc -c SudokuBoard.cpp 时,我得到了 SudokuBoard.o 文件,但是当我调用“gcc -o Driver.cpp SudokuBoard.o”时,我得到了一堵巨大的墙错误消息,这里是其中的一个示例:

/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 0 has invalid symbol index 11


SudokuBoard.cpp:(.text+0x34): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string()'
SudokuBoard.cpp:(.text+0x43): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string()'

它会删除 Driver.cpp 知道我做错了什么吗?

最佳答案

您的命令行不正确:

gcc -o Driver.cpp SudokuBoard.o

指示 gcc 将目标文件 SudokuBoard.o 链接为名为 Driver.cpp 的可执行文件。毫不奇怪,它首先删除目标文件。

此外,您没有指定要链接的运行时库,gcc 也没有默认为 C++:这解释了错误消息。

你应该这样写:

g++ -o Sudoku Driver.o SudokuBoard.o

关于c++ - 编译多个文件的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34111989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com