Pergunta

Eu compilei o NTL inifite número inteiro de precisão aritmética biblioteca para c++, usando o Microsoft Visual Studio 2008.Eu fiz como explicado, em este site, usando o Visual Studio interface, em vez de partir do prompt de comando.Na verdade, eu prefiro fazer isso a partir do prompt de comando, mas eu não tinha certeza de como.

De qualquer maneira, eu comecei a biblioteca compilada, e agora quero compilar um programa usando a biblioteca, a partir do prompt de comando.O programa que eu estou tentando compilar, foi testado em um sistema linux, onde eu compilá-lo com o seguinte

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

Nevermind, o pbf coisas, eu não tenho que instalado no Windows.É puramente opcional coisa que vai fazer a NTL correr mais rápido.De qualquer maneira, isso funciona bem no linux.Agora no Windows eu escrever o seguinte

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

Mas isso resulta nos seguintes erros:

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

É como se, meu mpqs.h o arquivo não está incluído no processo de compilação?Também eu não entendo por que ele reclama .push_back() para um vetor do tipo?

Ajuda é muito apreciada!

Foi útil?

Solução

mpqs.h é, definitivamente, ser incluído como a saída pede-lhe para se referir a ele.

Vendo como MPQS.h não parece ser incluído na NTL biblioteca ...você escreveu?Se assim, você pode postar o código acima?

Também, não deve incluir o arquivo de biblioteca em algum lugar na sua construção?

Editar:Não há nenhuma função find_smooth_values então por que você deve esperar MSVC para encontrá-lo?Eu não sei por que compila com o GCC, mas, obviamente, a sua falta.Eu estou supondo que os erros são causados por causa de um presente.Os erros estão dizendo coisas.Você deve ouvi-los.

push_back está a falhar porque não sabe qual o tipo que você está tentando push_back é.Mais uma vez este é provavelmente causado pelo fato de que find_smooth_values não existe.Tente adicionar o protótipo de função para a QS classe.Este pode muito bem resolver todos os seus problemas.

Como para a biblioteca não vai ter para utilizar a biblioteca até a compilação tiver êxito.Então não se preocupe com isso agora.Chegar lá e corrigir os erros que MSVC é relato!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top