Я скомпилировал целочисленную арифметическую библиотеку NTL с постоянной точностью для c ++, используя Microsoft Visual Studio 2008. Я сделал, как объяснено, на этом сайте , используя интерфейс Visual Studio, а не из командной строки. На самом деле я бы предпочел сделать это из командной строки, но я не знал, как это сделать.
Во всяком случае, я получил библиотеку, и теперь я хочу скомпилировать программу из библиотеки из командной строки. Программа, которую я пытаюсь скомпилировать, была протестирована на системе Linux, где я компилирую ее с помощью следующего
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
Не берите в голову gmp, у меня его нет в Windows. Это чисто дополнительная вещь, которая заставит NTL работать быстрее. Во всяком случае, это нормально работает на Linux. Сейчас на винде пишу следующее
cl /EHsc /I D:\Downloads\WinNTL-5_5_2\include mpqs.cpp main.cpp /link /LIBPATH:"D:\Documents\Visual Studio 2008\Projects\ntl\Debug"
Но это приводит к следующим ошибкам:
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...
Как будто мой файл mpqs.h не включен в процесс компиляции? Также я не понимаю, почему он жалуется на .push_back () для векторного типа?
Помощь очень ценится!