Поэтому я проверил некоторые другие сообщения об этой ошибке, но я не могу отследить проблему в моем собственном коде. Я работаю с тремя отдельными файлами. Когда я вызываю функции в одном файле, они вызывают ошибку. Из того, что я могу сказать, все отформатировано и указано правильно.
Основной код
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string>
//Task 1: Install Libaries and Get the GUI Running
#include "gui.h"
//Task 4: Implement the game engine
#include "engine.h"
//Include global constants
#include "constants.h"
using namespace std;
int main(int argc, char *argv[]){
//Seed random number generator
srand((unsigned)time(0));
//Task 2: Declare and Intialize Player Properties
int playerX = 0;
int playerY = 0;
int playerState = 0;
//Task 3: Declare and Initialize Background Properties'
int elementsX [MAX_NUM_ELEMENTS];
int elementsY [MAX_NUM_ELEMENTS];
int numElements = MAX_NUM_ELEMENTS;
//Initialize the game's data source
string gameFile("./data/background.txt");//Task 5: Load Data from a file'
//loadBackground(gameFile,numElements,elementsX,elementsY);
//Task 6: Randomize Player Sprite Appearance
randomPlayer(playerX,playerY,playerState,MAX_POS_X,MAX_POS_Y,MAX_PLAYER_STATE);
//Construct GUI
GUI gui;
//Initialize Termination Criteria
bool quit = false;
//While the user hasn't quit
while(quit == false){
//GUI waits for mouse events
while(gui.observeEvent()){
//GUI transmits quit event
if(gui.quitGame()){
quit=true;
}
}
//Render Game Data
gui.displayGameState(playerX,playerY,playerState,numElements,elementsX,elementsY);
}
//Return
return 0;
}
Двигатель:
#include <fstream>
#include <string>
#include "engine.h"#include "constants.h"#include <ctime>
using namespace std;
void loadBackground(string path, int numElements, int posX[], int posY[]){
fstream fin;
fin.open(path,ios::in);
int lineSize = 0;
fin >> numElements;
for(int i=0; i<numElements; i++){
fin >> posX[i];
fin >> posY[i];
}
fin.close();
}void randomPlayer(int posX, int posY, int state, int MAX_POS_X,int MAX_POS_Y,int MAX_PLAYER_STATE){
srand((unsigned)time(0));
posX = rand()%MAX_POS_X;
posY = rand()%MAX_POS_Y;
state = rand()%MAX_PLAYER_STATE-1;
}
Эта проблема возникает при вызове любой из двух функций из Engine. Я работаю в Visual Studio 2012 над Surface Pro 3.
Также это полная ошибка сборки:
1>------ Build started: Project: Hmwk.1.Assignment, Configuration: Debug Win32 ------
1>hmwk.1.obj : error LNK2019: unresolved external symbol "void __cdecl loadBackground(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,int &,int * const,int * const)" (?loadBackground@@YAXV?$basic_string@DU?$char_traits@D@std@@V? $allocator@D@2@@std@@AAHQAH2@Z) referenced in function _SDL_main
1>hmwk.1.obj : error LNK2019: unresolved external symbol "void __cdecl randomPlayer(int &,int &,int &,int,int,int)" (?randomPlayer@@YAXAAH00HHH@Z) referenced in function _SDL_main
1>C:\Users\tmars_000\Desktop\Fall 2014\Intro to Game Prog\Hmwk.1.Released\Debug\Hmwk.1.Assignment.exe : fatal error LNK1120: 2 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
engine.h
#ifndef ENGINE_H
#define ENGINE_H
#include <string>
using namespace std;
void loadBackground(string, int &, int[], int[]);
void randomPlayer(int &, int &, int &, int, int, int);
#endif
Задача ещё не решена.