I가 다음 .H 및 .CPP 파일되지 않은 외부 오류
내가 함수의 전체 코드를 포함있는 정의됩니다에있는 경우
난 내 프로그램을 컴파일 할 때 나는 그림과 같은 오류를 얻을 종료
hash.h
#define BUCKETS 64
#define B_ENTRIES 50000
int curr_tanker;
typedef unsigned long int ulong;
typedef struct bucket
{
int bucket_id;
ulong bucket_entries;
}bucket;
typedef struct tanker_record
{
ulong tanker_id;
ulong tanker_size;
ulong num_of_entries;
ulong bucket_entry_count;
}tanker_record;
typedef struct fpinfo
{
unsigned long chunk_offset;
unsigned long chunk_length;
unsigned char fing_print[33];
}fpinfo;
struct fpinfo* InitHTable(fpinfo *);
int CreateTanker(tanker_record tr[]);
int Hash_CreateEntry(struct fpinfo *,struct fpinfo he,tanker_record tr);
ht.cpp
#include <stdlib.h>
#include <string.h>
#include<stdio.h>
#include <iostream>
#include "ht.h"
struct fpinfo* InitHTable(struct fpinfo ht[][B_ENTRIES])
{
}
int CreateTanker(tanker_record tr[])
{
}
int
Hash_CreateEntry(struct fpinfo *t[][B_ENTRIES],struct fpinfo he,tanker_record tr[])
{
}
static void
WriteHTtoFile(struct fpinfo *t[][B_ENTRIES],int this_tanker)
{
}
MAIN.CPP
#include<iostream>
#include"ht.cpp"
#include<conio.h>
#include<stdlib.h>
void main(int argc, char **argv)
{
static fpinfo hash_table[BUCKETS][B_ENTRIES];
static tanker_record tr[100];
InitHTable(&hash_table[0][0]);
CreateTanker(tr);
struct fpinfo fp;
...
ar = Hash_CreateEntry(&hash_table[0][0], fp,tr[0]);
내가 vc2010에게
1> main.obj 사용하여 컴파일 할 때 나는 다음과 같은 오류를 얻을 : 오류 LNK2005 : "를 구조체 fpinfo * InitHTable __cdecl (구조체 ht.obj에 이미 정의 된 (InitHTable @@ YAPAUfpinfo @@ QAY0MDFA @ U1 @@ Z)
1> main.obj : 오류 LNK2005 : "int __cdecl CreateTanker (struct tanker_record * const) " (? CreateTanker @@ YAHQAUtanker_rec (int const @@@ Z) 이미 정의 된 ht.obj
1 main.obj : 오류 __cdecl Hash_CreateEntry (struct fpinfo * (* const) [50000], struct fpinfo, tanker_record * const 구조체) ht.obj에 이미 정의되어있는? Hash_CreateEntry @@ YAHQAY0MDFA @ PAUfpinfo @@ U1 @ QAUtanker_record @@@ Z) > main.obj : 오류 LNK2005 : "int curr_tanker"(? curr_tanker @@ 3HA)는 ht.obj에 이미 정의되어 있습니다. obj 1> main.obj : 오류 LNK2019 : 해결되지 않은 외부 기호 "int __cdecl Hash_CreateEntry (struct fpinfo *, struct fpinfo, tanker_record 구조체)"function에서 참조 된 (? Hash_CreateEntry @@ YAHPAUfpinfo @@ U1 @ Utanker_record @@@ Z) _main 1> main.obj : 오류 LNK2019 : 해결되지 않은 외부 기호 "_fInstruction _fdcl InitHTable (struct fpinfo *)"(InitHTable @@ YAPAUfpinfo @@ PAU1 @@ Z) 주
도움 주시면 감사하겠습니다.
내가 원래 한 일이지만 여전히 마지막 세 가지 오류가 있습니다. 처음 두 개의 "lnk2005"오류 만 피할 수 있습니다. – John
@ 존 : 오, 그렇습니다. 오류를 읽으면서 내 눈이 윤이 난 것 같습니다. 이는 선언이 정의와 일치하지 않기 때문입니다. 선언에는 포인터에서 객체로의 인수가 있고 정의에는 포인터에서 배열로의 인수가 있습니다. –
감사합니다. 그러나 함수 호출에 적합한 구문은 무엇입니까? 첫 번째 오류가 발생합니다 ** 오류 C2664 : 'InitHTable': 매개 변수 1을 'fpinfo *'에서 'fpinfo * [] [50000]'**로 변환 할 수 없습니다. ** 오류 C2664 : 'Hash_CreateEntry': 매개 변수 1을 'fpinfo *'를 'fpinfo * [] [50000]'** – John