У меня есть следующие файлы .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: «struct fpinfo * __cdecl InitHTable (struct fpinfo (* const) [50000])» (? InitHTable @@ YAPAUfpinfo @@ QAY0MDFA @ U1 @@ Z) уже определена в ht. OBJ
1> main.obj: ошибка LNK2005: «int __cdecl CreateTanker (struct tanker_record * const)»
(? CreateTanker @@ YAHQAUtanker_record @@@ Z) уже определен в ht.obj
1> main.obj: ошибка LNK2005: «int __cdecl Hash_CreateEntry (struct fpinfo * (* const) [50000], struct fpinfo, struct tanker_record * const)» (? Hash_CreateEntry @@ YAHQAY0MDFA @ PAUfpinerUU @) @@@ Z) уже определено в ht.obj
1> main.obj: ошибка LNK2005: «int curr_tanker» (? Curr_tanker @@ 3HA) уже определено в ht.obj
1> main.obj: ошибка LNK2019: неразрешенный внешний символ «int __cdecl Hash_CreateEntry (struct fpinfo *, struct fpinfo, struct tanker_record)»
(? Hash_CreateEntry @@ YAHPAUfpinfo @@ U1 @ Utanker_record @@@ Z) ссылка на функцию _main
1> main.obj: ошибка LNK2019: неразрешенный внешний символ "struct fpinfo * __cdecl InitHTable (struct fpinfo *)" (? InitHTable @@ YAPAUfpinfo @@ PAU1 @@ Z), на который имеется ссылка в функции _main
СПАСИБО ЗА ВАШУ ПОМОЩЬ !!