LINK: erreur fatale LNK1181: impossible d’ouvrir le fichier d’entrée ‘libclamav.lib’

J’utilise Microsoft Visual Studio 2010 et je travaille sur l’open source Clamav. Mon code est indiqué ci-dessous, ce qui génère une erreur.

#include  #include  #include  #include  #include  #include  #include  #include  int main(int argc, char **argv) { int fd, ret; unsigned long int size = 0; unsigned int sigs = 0; long double mb; const char *virname; struct cl_engine *engine; if(argc != 2) { printf("Usage: %s file\n", argv[0]); return 2; } if((fd = open(argv[1], O_RDONLY)) == -1) { printf("Can't open file %s\n", argv[1]); return 2; } if((ret = cl_init(CL_INIT_DEFAULT)) != CL_SUCCESS) { printf("Can't initialize libclamav: %s\n", cl_strerror(ret)); return 2; } if(!(engine = cl_engine_new())) { printf("Can't create new engine\n"); return 2; } /* load all available databases from default directory */ if((ret = cl_load(cl_retdbdir(), engine, &sigs, CL_DB_STDOPT)) != CL_SUCCESS) { printf("cl_load: %s\n", cl_strerror(ret)); close(fd); cl_engine_free(engine); return 2; } printf("Loaded %u signatures.\n", sigs); /* build engine */ if((ret = cl_engine_comstack(engine)) != CL_SUCCESS) { printf("Database initialization error: %s\n", cl_strerror(ret));; cl_engine_free(engine); close(fd); return 2; } /* scan file descriptor */ if((ret = cl_scandesc(fd, &virname, &size, engine, CL_SCAN_STDOPT)) == CL_VIRUS) { printf("Virus detected: %s\n", virname); } else { if(ret == CL_CLEAN) { printf("No virus detected.\n"); } else { printf("Error: %s\n", cl_strerror(ret)); cl_engine_free(engine); close(fd); return 2; } } close(fd); /* free memory */ cl_engine_free(engine); /* calculate size of scanned data */ mb = size * (CL_COUNT_PRECISION / 1024) / 1024.0; printf("Data scanned: %2.2Lf MB\n", mb); return ret == CL_VIRUS ? 1 : 0; } 

L’erreur suivante est générée LINK: erreur fatale LNK1181: impossible d’ouvrir le fichier d’entrée ‘libclamav.lib’

guidez-moi gentiment

Vous obtenez une erreur LNK1181 dans Visual Studio lorsque les fichiers .lib ou .obj spécifiés lors de la liaison sont introuvables dans le répertoire en cours, dans l’un des répertoires spécifiés par l’option de l’éditeur de liens LIBPATH ou dans l’un des répertoires spécifiés dans la variable d’environnement LIB .

Vous pouvez append le répertoire contenant le fichier de bibliothèque LIBPATH à LIBPATH pour résoudre le problème (ces instructions peuvent varier un peu en fonction de la version de Visual Studio):

  1. Dans l’Explorateur de solutions, cliquez avec le bouton droit sur le projet, puis cliquez sur Propriétés .
  2. Dans la boîte de dialog Pages de propriétés , développez Éditeur de liens , puis cliquez sur Général .
  3. Dans le champ Répertoires de bibliothèque supplémentaires , indiquez le chemin où réside libclamav.lib .

L’erreur peut également se produire lorsque LIBPATH contient des espaces. Si tel est le cas, déplacez la bibliothèque vers un chemin sans espaces ou mettez des guillemets autour du chemin.

Vous pouvez également résoudre ce problème en spécifiant le chemin de la bibliothèque au format DOS “8.3”.

Pour obtenir le formulaire 8.3, faites (en ligne de commande):

 DIR /AD /X 

récursivement à tous les niveaux des répertoires.