Question

J'ai compilé la bibliothèque arithmétique entière de précision inifite NTL pour C++, à l'aide de Microsoft Visual Studio 2008.J'ai fait comme expliqué, sur ce site, à l'aide de l'interface Visual Studio, plutôt qu'à partir de l'invite de commande.En fait, je préférerais le faire à partir de l’invite de commande, mais je ne savais pas comment procéder.

Quoi qu'il en soit, j'ai compilé la bibliothèque et je souhaite maintenant compiler un programme utilisant la bibliothèque, à partir de l'invite de commande.Le programme que j'essaie de compiler a été testé sur un système Linux, où je le compile avec ce qui suit

c++ -I/appl/htopopt/Linux_x86_64/NTL-5.4.2/include mpqs.cpp main.cpp -o main -L/appl/htopopt/Linux_x86_64/NTL-5.4.2/lib -lntl -L/appl/htopopt/Linux_x86_64/gmp-4.2.1/lib -lgmp -lm

Peu importe les trucs gmp, je ne l'ai pas installé sur Windows.Il s'agit d'une chose purement facultative qui permettra au NTL de fonctionner plus rapidement.Quoi qu'il en soit, cela fonctionne bien sous Linux.Maintenant, sous Windows, j'écris ce qui suit

cl /EHsc /I D:\Downloads\WinNTL-5_5_2\include mpqs.cpp main.cpp /link /LIBPATH:"D:\Documents\Visual Studio 2008\Projects\ntl\Debug"

Mais cela entraîne les erreurs suivantes :

mpqs.cpp
mpqs.cpp(38) : error C2039: 'find_smooth_vals' : is not a member of 'QS'
        d:\desktop\qs\mpqs.h(12) : see declaration of 'QS'
mpqs.cpp(41) : error C2065: 'M' : undeclared identifier
mpqs.cpp(41) : error C2065: 'n' : undeclared identifier
mpqs.cpp(42) : error C2065: 'sieve_table' : undeclared identifier
mpqs.cpp(42) : error C2228: left of '.size' must have class/struct/union
        type is ''unknown-type''
mpqs.cpp(43) : error C2065: 'sieve_table' : undeclared identifier
mpqs.cpp(44) : error C2065: 'qx_table' : undeclared identifier
mpqs.cpp(44) : error C3861: 'test_smoothness': identifier not found
mpqs.cpp(45) : error C2065: 'smooth_indices' : undeclared identifier
mpqs.cpp(45) : error C2228: left of '.push_back' must have class/struct/union
        type is ''unknown-type''
main.cpp
Generating Code...

C'est comme si mon fichier mpqs.h n'était pas inclus dans le processus de compilation ?De plus, je ne comprends pas pourquoi il se plaint de .push_back() pour un type vectoriel ?

L'aide est très appréciée !

Était-ce utile?

La solution

mpqs.h est définitivement inclus car la sortie vous demande de vous y référer.

Étant donné que MPQS.h ne semble pas être inclus dans la bibliothèque NTL...tu l'as écrit ?Si oui, pouvez-vous poster le code ?

De plus, ne devriez-vous pas inclure le fichier de bibliothèque quelque part dans votre build ?

Modifier:Il n'y a pas de fonction find_smooth_values, alors pourquoi devriez-vous vous attendre à ce que MSVC la trouve ?Je ne sais pas pourquoi cela compile sous GCC mais c'est évidemment manquant.Je suppose que les autres erreurs sont dues à celle-ci.Les erreurs vous disent des choses.Vous devriez les écouter.

push_back échoue car il ne sait pas quel est le type dans lequel vous essayez de push_back.Encore une fois, cela est probablement dû au fait que find_smooth_values ​​n'existe pas.Essayez d'ajouter le prototype de fonction dans la classe QS.Cela pourrait bien résoudre tous vos problèmes.

Quant à la bibliothèque, elle ne pourra pas l'utiliser tant que la compilation n'aura pas réussi.Alors ne vous inquiétez pas pour le moment.Entrez-y et corrigez les erreurs signalées par MSVC !

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top