21/01/13 15:27
tasx
Ciao a tutti!
Ho un problema con il linker di Visual Studio 2012:
file main.c
file: type.h
file type.c:
e l'errore che mi restituisce è il seguente:
il problema è che è da poco che uso VS per programmare in C, prima avevo sempre utilizzato Code::Blocks, Netbeans e altri... quindi penso che sia io a configurare male il linker?
Anche perchè le pcap le trova, la funzione hello() la linka senza problemi invece type_tobj_new() non l trova....
tuttavia il file "type.obj" viene generato quindi non capisco come mai salta l'errore??
c'è qualche definizione particolare del compilatore microsoft che mi manca, o altro?
ciao grazie
Ho un problema con il linker di Visual Studio 2012:
file main.c
#include <stdio.h> #include <stdlib.h> #include <pcap.h> #include "type.h" void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data) { printf("grab packet %d\n", header->len); } int main(int argc, char *argv[]) { pcap_if_t *alldevs; pcap_if_t *d; pcap_t *handle; int a = hello(); tobj t = type_tobj_new(); if (pcap_findalldevs(&alldevs, t->errbuf) == -1) { fprintf(stderr, "unable to find interfaces\n"); exit(1); } t->dev = alldevs; for(d = alldevs; d; d = d->next) { printf("%s\n", d->description); } handle = pcap_open_live(t->dev->name, 65536, 1, 1000, t->errbuf); pcap_loop(handle, 0, packet_handler, NULL); system("PAUSE"); return 0; }
file: type.h
#include <stdio.h> #include <stdlib.h> #include <pcap.h> typedef struct _tobj { pcap_if_t *dev; pcap_t *handle; char *errbuf; } *tobj; //typedef struct _tobj * tobj; tobj type_tobj_new(); int hello();
file type.c:
#include "type.h" int hello() { printf("hello \n"); return 0; } tobj type_new_tobj() { tobj t = (tobj) malloc(sizeof(tobj)); if (t == NULL) { fprintf(stderr, "Unable to alloc tobj memory\n"); exit(1); } return t; }
e l'errore che mi restituisce è il seguente:
main.obj : error LNK2019: riferimento al simbolo esterno _type_tobj_new non risolto nella funzione _main
il problema è che è da poco che uso VS per programmare in C, prima avevo sempre utilizzato Code::Blocks, Netbeans e altri... quindi penso che sia io a configurare male il linker?
Anche perchè le pcap le trova, la funzione hello() la linka senza problemi invece type_tobj_new() non l trova....
tuttavia il file "type.obj" viene generato quindi non capisco come mai salta l'errore??
c'è qualche definizione particolare del compilatore microsoft che mi manca, o altro?
ciao grazie
Ultima modifica effettuata da tasx 21/01/13 15:28
aaa