program wieloplikowy - error LNK2019 + fatal error LNK1120:

0

Witam

Pisze program z dwoma plikami źródłowymi i jednym nagłówkowym i podczas kompilacji dostaje poniższy błąd:

1>zad_9_1_golf_m.obj : error LNK2019: unresolved external symbol "void __cdecl setgolf(struct golf_ns::golf &,char const *,int)" (?setgolf@@YAXAAUgolf@golf_ns@@PBDH@Z) referenced in function _main
1>C:\Users...\documents\visual studio 2015\Projects\ConsoleApplication190\Debug\ConsoleApplication190.exe : fatal error LNK1120: 1 unresolved externals

Nie bardzo rozumiem jaki symbol zewnętrzny nie jest powiązany

główny plik źródłowy:

// zad_9_1_golf_m.cpp -- 190 - zadanie 1 z rodzialu 9 
// kompilowac z zad_9_1_golf.cpp

#include <iostream>
#include "zad_9_1_golf.h"

using namespace golf_ns;

extern const int Len;

golf jim;
golf ann;
golf tom;

int main()
{
	cout << "Program do rejestrowania ilosc punktow golfistow." << endl;

	cout << "Liga Kobiet." << endl;
	cout << "Podaj imie i nazwisko gracza: ";

	char temp[Len];
	int tempi;
	cin.get(temp, Len);

	if (sizeof(temp) == 0)
		cout << "Brak nazwiska zawodniczki.\nKoniec wprwadzania danych.";
	else
	{
		cout << "Podaj ilosc punktow fandicap: ";
		cin >> tempi;
		setgolf(ann, temp, tempi);
	}
	for (int i = 0; i < ArSize; i++)
	{
		showgolf(ann);
	}
	cout << "Liga mezczyzn." << endl;
	setgolf(tom);

	int hc;
	cout << "Podaj ilosc pukntow Jimiego:";
	cin >> hc;
	handicap(jim, hc);

	showgolf(tom);

	system("pause");
	return 0;
}

2 plik źródłowy:

// zad_9_1_golf.cpp -- 190 - zadanie 1 z rodzialu 9 
// kompilowac z zad_9_1_golf_m.cpp
#include <iostream>
#include "zad_9_1_golf.h"

using namespace golf_ns;

extern const int Len;
//extern golf ranking[ArSize];

extern golf jim;
extern golf ann;
extern golf tom;

void setgolf(golf & g, char * name, int hc)
{
	//golf temp;
	//temp = g;
	for (int i = 0; i < sizeof(name); i++)
	{
		g.fullname[i] = name[i];
	}
	//g.fullname = name;
	g.handicap = hc;
	std::cout << g.handicap;
}

void setgolf(golf & g)
{
	cout << "podaj imie i nazwisko zawodnika: ";
	cin.get(g.fullname, Len);


	if (sizeof(g.fullname) == 0)
	{
		cout << " 0 - nie udana proba wprowadzenia danych";
		cout << "Podaj ilosc punktow handicap: ";
		cin >> g.handicap;
	}
	else
		cout << " 1 - Nazwisko przyjete.";
}

void handicap(golf & g, int hc)
{
	g.handicap = hc;
}

void showgolf(const golf & g)
{
	cout << "Nazwisko gracza: " << g.fullname << endl;
	cout << "Ilosc punktow handicap: " << g.handicap << endl;
}

plik nagłówkowy:

// zad_9_1_golf.hpp -- 190 - zadanie 1 z rodzialu 9

#ifndef ZAD_9_1_GOLF_HPP_INCLUDED
#define ZAD_9_1_GOLF_HPP_INCLUDED

const int Len = 40;

namespace golf_ns
{
const int ArSize = 5;
using std::cout;
using std::endl;
using std::cin;
struct golf
{
	char fullname[Len];
	int handicap;
};
}

using namespace golf_ns;

void setgolf(golf & g, const char * name, int hc);

void setgolf(golf & g);

void handicap(golf & g, int hc);

void showgolf(const golf & g);


#endif ZAD_9_1_GOLF_HPP_INCLUDED

1

Czy plik zad_9_1_golf.cpp dodałeś do projektu (nie chodzi o skopiowanie do katalogu)?

1

Nazwałeś plik nagłówkowy: zad_9_1_golf.hpp a includujesz: zad_9_1_golf.h.
Ale to problem był tu:
Nagłówek funkcji brzmi: void setgolf(golf & g, const char * name, int hc),
a w definicji funkcji już: void setgolf(golf & g, char * name, int hc).

1 użytkowników online, w tym zalogowanych: 0, gości: 1