грешка LNK2019: неразрешен външен символ двойно __cdecl calculateRetail(double,double)

Получавам тази грешка: error LNK2019: unresolved external symbol "double __cdecl calculateRetail(double,double)" (?calculateRetail@@YANNN@Z) referenced in function _main 1>c:\users\100236744\documents\visual studio 2010\Projects\Item sales price calculator\Debug\Item sales price calculator.exe : fatal error LNK1120: 1 unresolved externals

Аз съм много нов в C++.

// FILE: Price markup calculator.cpp
// PROGRAMMER: Karolina Sabat   CPSC 1103   Section: S11
// Program which calculates the retail cost of an item based on wholesale cost and mark up percentage. 
// Calculates the total interest paid based on the annual interest rate.

#include <iostream>         // For cin, cout
#include <iomanip>          // For setw, setprecision
using namespace std;

// FUNCTION PROTOTYPES
void getData (double &, double &);          // Receives USER INPUT - Wholesale cost & percentage markup
double calculateRetail(double, double);     // Calculates retail price
void Display (double, double, double);      // Displays results: Wholesale cost, markup percentage, retail price

int main ()
{

// VARIABLES
double  wholesale_cost = 0;                 // Wholesale item cost - USER INPUT
double  markup_percent = 0;                 // Markup percentage
double  retail_price = 0;               // Calculated retail cost

// FUNCTION CALL 1: Wholesale cost - USER INPUT
getData(wholesale_cost, markup_percent);
// FUNCTION CALL 2: Retail price - CALCULATION
calculateRetail(wholesale_cost, markup_percent); 
// FUNCTION CALL 3: Display Wholesale price, markup percentage, retail price - OUTPUT
Display(wholesale_cost, markup_percent, retail_price);
// PROGRAM MADE BY - OUTPUT
cout << endl << endl;
cout << " Written by: Karolina Sabat - CPSC 1103 - Section: S11" << endl << endl;
 return 0;
 }

// FUNCTION 1: GetData
void getData (double &wholesale_c, double &markup_p)
{
// Wholesale cost - USER INPUT
cout << " Please enter the item's wholesale cost: $ ";
cin >> wholesale_c;
// Wholesale cost - INVALID ENTRY 
while (wholesale_c < 0)
{
    cout << endl;
    cout << " Please enter a wholesale cost greater than 0." << endl;
    cout << " Item's wholesale cost: $ ";
    // Will clear characters
    cin.clear();
    cin.ignore(numeric_limits<streamsize>::max(), '\n');
    cin >> wholesale_c;
}
// Wholesalecost - VALID
// Markup percentage - USER INPUT
cout << "Please enter the markup percentage: % " ;
cin >> markup_p;
// Markup percentage - INVALID
while (markup_p < 0) 
{
    cout << " ERROR: INVALID INPUT." << endl;
    cout << " Please enter a markup percentage greater than 0." << endl;
    cout << " Markup percentage: % ";
    // Will clear characters
    cin.clear();
    cin.ignore(numeric_limits<streamsize>::max(), '\n');
    cin >> markup_p;
}
}

// FUNCTION 2: CalculateRetail
double CalculateRetail (double wholesale_c, double markup_p)
{
// VARIABLES
double markup_amount;
double retail_price;
// CALCULATIONS
markup_amount = (wholesale_c * markup_p) / 100;
// Markup amount
retail_price = wholesale_c + markup_amount;
return retail_price;
}

// FUNCTION 3: Display
void Display (double wholesale_cost, double markup_percent, double retail_price)
{
// Title - OUTPUT
cout << endl;
cout << " WHOLESALE COST: " << setw(10) << "PRICE MARKUP %: " << setw(10) << "RETAIL PRICE" << endl;
cout << " ________________________________________________________________________________" << endl;
cout << endl;
// NUMBER FORMATING
cout << setprecision(2) << fixed << showpoint;
// Results - OUTPUT
cout << " " << wholesale_cost << setw(10) << markup_percent << setw(10) << retail_price;
}

person tinywolves    schedule 07.03.2014    source източник
comment
възможен дубликат на грешка LNK2019 неразрешен външен символ и около три дузини други. Търсенето на грешка LNK2019: неразрешен външен символ би показало много връзки към предишни въпроси. Добре е първо да направите основно проучване, преди да публикувате.   -  person Ken White    schedule 07.03.2014
comment
Направих го, потърсих този форум и разбирам грешката, но след час не можах да намеря грешката в МОЯ код. Не видях грешката в главните букви. Грешките в кодирането на други хора не можаха да ми помогнат.   -  person tinywolves    schedule 07.03.2014
comment
Добре, трябва да бъде затворен като извън темата, защото този въпрос е причинен от проблем, който вече не може да бъде възпроизведен, или обикновена печатна грешка. Въпреки че подобни въпроси може да са по темата тук, този е разрешен по начин, който е малко вероятно да помогне на бъдещите читатели. Това често може да се избегне чрез идентифициране и внимателно инспектиране на най-кратката програма, необходима за възпроизвеждане на проблема, преди публикуване.   -  person Ken White    schedule 07.03.2014


Отговори (3)


Срещате този проблем, защото сте написали прототипа за функцията като:

double calculateRetail(double, double);

но тогава, когато внедрихте функцията, написахте:

double CalculateRetail (double wholesale_c, double markup_p)

C и C++ са чувствителни към главни и малки букви, така че не вижда CalculateRetail и calculateRetail като едно и също. Вероятно сте искали да напишете CalculateRetail като CalculateRetail.

person OSborn    schedule 07.03.2014

изчисляване на дребно отложено и използвано. Определено CalculateRetail. ...... c != C

person Cigany    schedule 07.03.2014

double calculateRetail(double, double);

double CalculateRetail (double wholesale_c, double markup_p)

Вашата дефиниция на функция не съвпада точно с нейния прототип. Ако промените дефинираното име на calculateRetail, то трябва да работи.

person cf stands with Monica    schedule 07.03.2014
comment
БОЖЕ МОЙ. ДВА ЧАСА ЗА ГРЕШКА В ГЛАВНИ ИЗПИСВАНИЯ Не успях да видя. Не мога да повярвам, че си забелязал това. Да, проработи. Еха. - person tinywolves; 07.03.2014
comment
@user3390939 Само за бъдещи справки, този вид грешка в линкера обикновено означава, че е възникнала такава печатна грешка. Обикновено това означава, че или името на дефиницията не съвпада с името на декларацията, или типовете на параметрите в дефиницията не съвпадат с типовете на параметрите в декларацията. - person cf stands with Monica; 07.03.2014