Unresolved external symbol error

When I try to compile a program from a C book I am following I am getting these errors, I have looked for ways to resolve it but I wasn't able to. I hope to find an answer here.

Errors:
1
2
3
4
5
6
7
8
Error	3	error LNK2001: unresolved external symbol _druk_instructies	C:\Users\Ivo\Documents\Visual Studio 2012\Projects\ConsoleApplication2\ConsoleApplication2\Handspel.obj	ConsoleApplication2
Error	4	error LNK2001: unresolved external symbol _speler_keuze	C:\Users\Ivo\Documents\Visual Studio 2012\Projects\ConsoleApplication2\ConsoleApplication2\Handspel.obj	ConsoleApplication2
Error	5	error LNK2001: unresolved external symbol _machine_keuze	C:\Users\Ivo\Documents\Visual Studio 2012\Projects\ConsoleApplication2\ConsoleApplication2\Handspel.obj	ConsoleApplication2
Error	6	error LNK2001: unresolved external symbol _vergelijk	C:\Users\Ivo\Documents\Visual Studio 2012\Projects\ConsoleApplication2\ConsoleApplication2\Handspel.obj	ConsoleApplication2
Error	7	error LNK2001: unresolved external symbol _spel_status	C:\Users\Ivo\Documents\Visual Studio 2012\Projects\ConsoleApplication2\ConsoleApplication2\Handspel.obj	ConsoleApplication2
Error	8	error LNK2001: unresolved external symbol _speler_hulp	C:\Users\Ivo\Documents\Visual Studio 2012\Projects\ConsoleApplication2\ConsoleApplication2\Handspel.obj	ConsoleApplication2
Error	9	error LNK1120: 6 unresolved externals	C:\Users\Ivo\Documents\Visual Studio 2012\Projects\ConsoleApplication2\Release\ConsoleApplication2.exe	ConsoleApplication2


The .h file:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string>

#ifdef __cplusplus
extern "C" 
{  
#endif  

enum p_k_s {papier, keisteen, schaar, spel, hulp, instructies, einde};
enum uitkomst {gewonnen, verloren, gelijk, fout};

typedef enum p_k_s p_k_s;
typedef enum uitkomst uitkomst;

uitkomst vergelijk(p_k_s speler, p_k_s machine);
void spel_status(int win_teller, int verlies_teller, int gelijk_teller);
void speler_hulp(void);
void druk_instructies(void);
p_k_s speler_keuze(void);
p_k_s machine_keuze(void);

#ifdef __cplusplus
}
#endif 


The .cpp file:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#include "stdafx.h"
#include "Handspel.h"
#include <string>


int _tmain(int argc, _TCHAR* argv[])
{
	return 0;
}

int main()
{
	int win_teller = 0, verlies_teller = 0, gelijk_teller = 0;
	uitkomst resultaat;
	p_k_s speler, machine;

	srand(time(NULL));
	druk_instructies();
	while ((speler = speler_keuze()) !=einde)
		switch(speler) 
	{
		case papier:
		case keisteen:
		case schaar:
			machine = machine_keuze();
	
			resultaat = vergelijk(speler, machine);
			if (resultaat == gewonnen) 
			{
				++win_teller;
				printf("Jij hebt gewonnen.\n");
			}
			else if (resultaat == verloren) {
				++verlies_teller;
				printf("Jij hebt verloren.\n");
			}
			else if (resultaat == gelijk) {
				++gelijk_teller;
				printf("Gelijkspel.\n");
			}
			break;
		case spel:
			spel_status(win_teller, verlies_teller, gelijk_teller);
			break;
		case instructies:
			druk_instructies();
			break;
		case hulp:
			speler_hulp();
			break;
	}
	spel_status(win_teller, verlies_teller, gelijk_teller);
	if (win_teller > verlies_teller)
		printf("\nGEFELICITEERD! - Jij hebt gewonnen!\n\n");

	void druk_instructies(void);
	{
		printf("\n%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
			"HANDSPEL:\n",
			" In dit spel staat p voor \"papier\", k voor \"keisteen\", en s voor \n",
			" \"schaar\".Speler en machine doen een keuze uit p, k of s. \n",
			" Kiezen beide hetzelfde, dan is er een gelijkspel. \n",
			" Anders geldt: \n",
			" \"het papier gaat over de keisteen heen\" (papier wint), \n",
			" \"de keisteen slaat de schaar aan stukken\" (keisteen wint), \n",
			" \"de schaar vernietigt het papier\" (schaar wint). \n\n",
			" Men mag ook invoeren:\n",
			" g voor spel status (aantal gewonnen partijen tot dusver), \n",
			" h voor hulp,\n",
			" i voor instructies (drukt deze instructies af,\n",
			" e voor einde (einde van huidige ronde).\n",
			" Dit spel gaat door totdat er een e wordt ingevoerd.\n",
			" Veel success!\n");
	}

	p_k_s speler_keuze(void);
	{
		int c;
		p_k_s speler;

		printf("Voer een p, k of s in: ");
		while ((c = getchar()) == ' ' || c == '\n' || c == '\t')
			;
		switch(c) 
		{
		case 'p':
			speler = papier;
			break;
		case 'k':
			speler = keisteen;
			break;
		case 's':
			speler = schaar;
			break;
		case 'g':
			speler = spel;
			break;
		case 'i':
			speler = instructies;
			break;
		case 'e':
			speler = einde;
			break;
		default:
			speler = hulp;
			break;
		}
		return speler;
	}

	p_k_s machine_keuze();
	{
		return ((p_k_s) (rand() %3));
	}

	uitkomst vergelijk(p_k_s speler, p_k_s machine);
	{
		uitkomst resultaat;

		if (speler == machine)
			return gelijk;
		switch(speler) 
		{
		case papier:
			resultaat = (machine == keisteen) ? gewonnen : verloren;
			break;
		case keisteen:
			resultaat = (machine == schaar) ? gewonnen : verloren;
			break;
		case schaar:
			resultaat = (machine == papier) ? gewonnen : verloren;
			break;
		}
	}
	return resultaat;

	void spel_status(int win_teller, int verlies_teller, int gelijk_teller);
	{
		printf("\n%s\n%s%4d\n%s%4d\n%s%4d\n%s%4d\n\n",
			"STAND VAN HET SPEL:",
			" Gewonnen: ", win_teller,
			" Verloren: ", verlies_teller,
			" Gelijkspel: ", gelijk_teller,
			" Totaal: ", win_teller + verlies_teller + gelijk_teller);
	}

	void speler_hulp(void);
	{
		printf("\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n\n",
			"De volgende karakters mogen gebruikt worden:",
			" p voor papier",
			" k voor keisteen",
			" s voor schaar",
			" g voor gewonnen partijen, spel status",
			" h voor het afdrukken van deze lijst, hulp",
			" i voorhet afrdukken van de instructies, de spelregels",
			" e voor voor het einde van het spel");
	}
}
It's the way you're implementing your functions.

You can't define functions inside of main like that. They need to be outside the scope of main (and include the relevant prototypes, if necessary).

Also, when you're defining functions, you need to make sure you don't have a terminator after the parenthesis.
Thank you! It's working, not gonna make such a stupid mistake again XD.
Topic archived. No new replies allowed.