2017-01-02 1 views
-2

C (VS2010)에서 몇 가지 간단한 함수를 구현하려고합니다. 아주 쉬워야합니다. 하지만, 내가__cdecl LNK 2019 VS2010 C

오류 LNK2019를 수신하고 있습니다 : 확인되지 않은 외부 기호를 "1> test01.obj : 오류 LNK2019 : 확인되지 않은 외부 기호"INT __cdecl EX2 (INT, INT) "(EX2 @@ YAHHH @ Z?) 참조 오류 LNK2019 : 1> test01.obj _main 함수되지 않은 외부 기호 "무효 __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 죄송합니다. 다음 번에 나는 똑같은 것을 기억하고 이에 따라 행동하겠습니다. –

관련 문제