2017-01-02 12 views
-2

Я пытаюсь реализовать несколько простых функций в C (VS2010). Должно быть очень легко. НО, я получаю__cdecl LNK 2019 VS2010 C

ошибка LNK2019: неразрешенный внешний символ «1> test01.obj: LNK2019 ошибка: неразрешенный внешний символ "INT __cdecl Ex2 (целое, целое)"(Ex2 @@ YAHHH @ Z?) Ссылка в функции _Главная 1> test01.obj: LNK2019 ошибки: неразрешенный внешний символ "недействительным __cdecl Ex1 (INT *, Int)" (? Ex1 @@ YAXPAHH @ Z) ссылка в функции _main

для обеих функций Несмотря на то, он работал, когда я создал первую функцию (Ex1). Декларация и прототипы выглядят хорошо для меня .. В ней есть только один файл C с функциями. Буду рад за любые советы.

#include <stdio.h> 

//Function prototypes///////////////////////////////// 

void Ex1(int*, int); 
int Ex2(int, int); 

///////////////////////////////////////////////////// 

int main() 
{ 
    int select = 0, i, all_Ex_in_loop = 0, arrsize = 0; 
    int a = -3, b = 13; // EX 2 variables 

    int* arrPtr;    //EX1 definitions 
    int arr[] = 
    { 7, 5, -8, 3, 4, 21, -10, -3, 2, 4 }; 
    arrsize = sizeof(arr)/sizeof(int); 
    arrPtr = arr; 

    printf(
     "Run menu once or cyclically?\n(Once - enter 0, cyclically - enter other number) "); 
    if (scanf_s("%d", &all_Ex_in_loop) == 1) 
    do 
    { 
     for (i = 1; i <= 5; i++) 
     printf("Ex%d--->%d\n", i, i); 
     printf("EXIT-->0\n"); 
     do 
     { 
     select = 0; 
     printf("please select 0-5 : "); 
     scanf_s("%d", &select); 
     } while ((select < 0) || (select > 5)); 
     switch (select) 
     { 
     case 1: 
     Ex1(arrPtr, arrsize); 
     break; 
     case 2: 
     Ex2(a, b); 
     break; 
//case 3: Ex3(); break; 
//case 4: Ex4(); break; 
//case 5: Ex5(); break; 
     } 
    } while (all_Ex_in_loop && select); 
    return 0; 
} 

// ---------------------------------------------- EX1 ------------------------------------------------------------- 
void Ex1(int* ptr, int size) 
{ 
    int i; 

    printf("Original array: "); 
    for (i = 0; i < size; i++) 
    { 
    printf("%d, ", ptr[i]); 
    } 
    for (i = 1; i < size; i++) 
    { 
    ptr[i] += ptr[i - 1]; 
    } 

    printf("\n Updated array: "); 
    for (i = 0; i < size; i++) 
    { 
    printf("%d, ", ptr[i]); 
    } 
    printf("\n"); 

} 

//---------------------------------------------------------------- EX2 ------------------------------------------------------------ 

int Ex2(int a, int b) 
{ 
    int firstVal = 0, secVal = 0, num = 0; 

    printf("Please enter numbers. -1 to finish: "); 
    while (num != -1) 
    { 
    scanf_s("%d", &num); 
    if (num > (a + b)/2 && num < b) 
    { 
     firstVal += num; 
    } 
    if (num > a && num < (a + b)/2) 
    { 
     secVal += num; 
    } 
    } 

    printf("\n The value is: %d", firstVal + secVal); 

    return firstVal + secVal; 
} 
+2

Невозможно воспроизвести. – Stargateur

ответ

0

Чрезвычайно извините, так как я не смог воспроизвести то же сообщение об ошибке.

Наиболее распространенная ошибка, по которой эта проблема возникла, упоминается ниже.

Проверьте, было ли вы выбрано «новое приложение Win32» вместо «нового консольного приложения Win32».

Также существует множество причин, из-за которых возникают проблемы с компоновщиком. Проверьте свой код.

+1

Не подходит ли это в качестве комментария? –

+0

@Sourav, извините, в следующий раз я буду помнить то же самое и действовать соответственно. –