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):
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.