Ошибка LINK 2005, основанная на моем собственном классе, который я не включил дважды. Как отследить и решить проблему? [C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка LINK 2005, основанная на моем собственном классе, который я не включил дважды. Как отследить и решить проблему? [

Сообщение Anonymous »

Сейчас я получаю следующую ошибку:

Код: Выделить всё

Error   LNK2005 "unsigned char * fontArray" (?fontArray@@3PAEA) already defined in Chip8.obj    CHIP 8  C:\Users\Cyani\source\repos\CHIP-8\main.obj 1
Я понимаю, что здесь говорится о том, что я дважды определяю FontArray и что это обычно вызвано включением заголовка, который уже был включен через другой заголовок. Дело в том, что я не могу найти, где я это сделал. FontArray находится в файле Font.h.
file.h:

Код: Выделить всё

#include 

const unsigned int FONTSET_SIZE = 80;

uint8_t fontArray[FONTSET_SIZE] =
{
0xF0, 0x90, 0x90, 0x90, 0xF0, // 0
0x20, 0x60, 0x20, 0x20, 0x70, // 1
0xF0, 0x10, 0xF0, 0x80, 0xF0, // 2
0xF0, 0x10, 0xF0, 0x10, 0xF0, // 3
0x90, 0x90, 0xF0, 0x10, 0x10, // 4
0xF0, 0x80, 0xF0, 0x10, 0xF0, // 5
0xF0, 0x80, 0xF0, 0x90, 0xF0, // 6
0xF0, 0x10, 0x20, 0x40, 0x40, // 7
0xF0, 0x90, 0xF0, 0x90, 0xF0, // 8
0xF0, 0x90, 0xF0, 0x10, 0xF0, // 9
0xF0, 0x90, 0xF0, 0x90, 0x90, // A
0xE0, 0x90, 0xE0, 0x90, 0xE0, // B
0xF0, 0x80, 0x80, 0x80, 0xF0, // C
0xE0, 0x90, 0x90, 0x90, 0xE0, // D
0xF0, 0x80, 0xF0, 0x80, 0xF0, // E
0xF0, 0x80, 0xF0, 0x80, 0x80  // F
};
и он включен в заголовок Chip8.h:

Код: Выделить всё

#pragma once

#include 
#include 
#include 
#include "Font.h"

class Chip8
{
public:
uint8_t registers[16]{};
uint8_t memory[4096]{};
uint16_t index{};
uint16_t pc{};
uint16_t stack[16]{};
uint16_t sp{};
uint8_t delayTimer{};
uint8_t soundTimer{};
uint8_t keypad[16]{};
uint32_t video[64 * 32]{};
uint16_t opcode;

Chip8() : randGen(std::chrono::system_clock::now().time_since_epoch().count()) {

//init rng
randByte = std::uniform_int_distribution(0, 255);
//init PC
pc = START_ADDRESS;

//load fonts into mem
for (unsigned int i = 0; i < FONTSET_SIZE; ++i) {
memory[FONT_ADDRESS + i] = fontArray[i];
}
// Set up function pointer table
table[0x0] = &Chip8::Table0;
table[0x1] = &Chip8::OP_1nnn;
table[0x2] = &Chip8::OP_2nnn;
table[0x3] = &Chip8::OP_3xkk;
table[0x4] = &Chip8::OP_4xkk;
table[0x5] = &Chip8::OP_5xy0;
table[0x6] = &Chip8::OP_6xkk;
table[0x7] = &Chip8::OP_7xkk;
table[0x8] = &Chip8::Table8;
table[0x9] = &Chip8::OP_9xy0;
table[0xA] = &Chip8::OP_Annn;
table[0xB] = &Chip8::OP_Bnnn;
table[0xC] = &Chip8::OP_Cxkk;
table[0xD] = &Chip8::OP_Dxyn;
table[0xE] = &Chip8::TableE;
table[0xF] = &Chip8::TableF;
...
Итак, мой вопрос: я ищу не там, где надо? Visual Studio сообщает, что проблема в Chip8.obj, поэтому я предполагаю, что проблема в заголовке Chip8.h.

Подробнее здесь: https://stackoverflow.com/questions/784 ... ow-to-trac
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»