Zuerst habe ich versucht, GMP zu verwenden, weil Boost-Dokumentation sagt, es ist schneller, aber die gmp.h-Datei fehlt Boost-Bibliothek, so musste ich installieren GMP-Bibliothek und kopieren Sie die gmp.h. Nachdem ich das getan habe, bekam ich externes Symbol Fehler, wenn ich mpz_int benutze. Also entschied ich mich, cpp_int auszuprobieren, kopierte das Beispiel aus der Boost-Dokumentation und es funktionierte. das ist, was ich versucht:Ich kann nicht herausfinden, warum multi-precision Berechnung nicht funktioniert mit Boost-Bibliothek
#include <boost/multiprecision/cpp_int.hpp>
#include <iostream>
int main()
{
using namespace boost::multiprecision;
int128_t v = 1;
// Do some fixed precision arithmetic:
for(unsigned i = 1; i <= 20; ++i)
v *= i;
std::cout << v << std::endl; // prints 20!
// Repeat at arbitrary precision:
cpp_int u = 1;
for(unsigned i = 1; i <= 100; ++i)
u *= i;
std::cout << u << std::endl; // prints 100!
return 0;
}
So dann habe ich eine Fakultäts-Funktion in einer Math-Klasse, aber jetzt jedes Mal, wenn ich eine Variable aus cpp_int Bibliothek verwenden erhalte ich diesen Fehler: Fehler LNK2019: nicht aufgelöstes externes Symbol __CrtDbgReportW verwiesen Funktion "Leere __cdecl std :: _ Debug_message (wchar_t const *, wchar_t const *, unsigned int)" (? _Debug_message @ std @@ YAXPB_W0I @ Z)
Nun jedes Mal, wenn ich versuchen, einen neuen Wert zuweisen Variable I cpp_int Bekomme diesen Fehler, das Seltsame ist, dass das Beispiel funktioniert hat und jetzt das selbe Beispiel nicht für dieses Projekt funktioniert, aber wenn ich ein neues Projekt erstelle und die selbe Boost-Lib verwende, funktioniert es wieder.
* Nachdem ich dies getan habe, bekam ich externe Symbol Fehler bei der Verwendung von mpz_int. Also habe ich beschlossen, cpp_int auszuprobieren, habe das Beispiel aus der Boost-Dokumentation kopiert und es hat funktioniert. Das ist es, was ich ausprobiert habe: * - Sie sollten Bibliotheken nicht wirklich austauschen, solange Sie nicht genau wissen, was Sie tun. Versuch und Irrtum ist nicht der richtige Ort, wenn Sie versuchen, eine Anwendung zu erstellen. – PaulMcKenzie
Ich habe versucht, herauszufinden, wie man große Zahlen berechnet. Es war nicht in einer Anwendung, an der ich arbeite, habe ich ein neues Projekt dafür erstellt, Versuch und Irrtum ist der Weg, neue Dinge zu lernen, nicht wahr? – user3196144
Die Bibliotheken zu wechseln und glücklicherweise etwas zur Arbeit zu bringen lehrt Sie nicht, warum die anderen Bibliotheken oder Bibliotheken nicht funktionierten. Wenn Sie unter Windows irgendeine Art von Entwicklung durchführen und mit einem Bibliotheksproblem eines Drittanbieters konfrontiert werden, müssen Sie unbedingt wissen, was zu tun ist, wenn dies erneut geschieht. Die Antwort von shrike hat einige Einblicke gegeben, warum das Problem existiert. – PaulMcKenzie