Bibliothek benutzen



  • Danke für die schnelle Hilfe. Die Bibliothek is übrigens aus dem Buch http://www.welschenbach.de/Cryptography/index.html. Dort ist zwar eine Dokumentation über die Inhalte der Bibliothek(pseudocode). Allerdings finde ich weder in dem Buch noch auf der Website Hinweise wie man die Bib einbindet.

    Bin jetzt soweit, dass flint.h korrekt includiert wird. Leider kann noch nicht auf die gewünschten Inhalte der Bibliothek zugreifen. Die CD enthält aber auch noch weitere Header.

    Bin beeindruckt wie schnell einem hier geholfen wird!



  • So, hab mich jetzt auch mal angemeldet.
    Was ich auch nicht verstehe:

    Was sind/meinst du mit Configuration ?



  • Hi. Mir scheints als sei mein Problem gelöst. kann die anderen Header nun auch einfach mit #include einbinden.

    Vielen Dank für die Hilfe



  • Zu früh gefreut : )
    Jetzt bekomm ich folgende Linker-Fehler

    1> Teilnehmer.cpp
    1>ManifestResourceCompile:
    1> Alle Ausgaben sind aktuell.
    1>Test2.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""int const __cdecl operator==(class LINT const &,class LINT const &)" (??8@YA?BHABVLINT@@0@Z)" in Funktion "_main".

    1>Test2.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: class LINT const & __thiscall LINT::operator=(class LINT const &)" (??4LINT@@QAEABV0@ABV0@@Z)" in Funktion "_main".

    1>Test2.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""class LINT const __cdecl operator/(class LINT const &,class LINT const &)" (??K@YA?BVLINT@@ABV0@0@Z)" in Funktion "_main".

    1>Test2.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""class LINT const __cdecl operator*(class LINT const &,class LINT const &)" (??D@YA?BVLINT@@ABV0@0@Z)" in Funktion "_main".

    1>Test2.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall LINT::LINT(int)" (??0LINT@@QAE@H@Z)" in Funktion "_main".

    1>C:\Users\Matthias\Documents\Visual Studio 2010\Projects\extended_Euklid\Debug\RSA.exe : fatal error LNK1120: 5 nicht aufgelöste externe Verweise.
    1>
    1>Fehler beim Erstellen
    1>
    1>Verstrichene Zeit 00:00:02.51
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen =========

    Kann mir jemand sagen wie ich rausfinden kann was das bedeutet ?



  • Was benutzt Du für eine IDE?
    Meine Anleitung war für Visual Studio (2010).
    Gibt übrigens in der Express Edition gratis!

    Simon



  • Jep, benutze auch Visual Studio 2010.



  • Kann mir jemand sagen wie ich rausfinden kann was das bedeutet ?

    Die Fehler bedeuten, dass die Definition (in der Lib) der entsprechenden Funktionen nicht gefunden wird. Die Deklaration (im Header) wurde gefunden.

    Ein Bsp:

    1>Test2.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall LINT::LINT(int)" (??0LINT@@QAE@H@Z)" in Funktion "_main".

    Im File Test2.cpp, welches zu Test2.obj kompiliert wird, gibts ein Objekt vom Type LINT, welches den Konstruktor mit einem int Argument aufruft.
    Etwa so:

    LINT lint(23);
    

    Die Definition des Konstruktors wird nun nicht gefunden. Das kann bedeuten, dass die Library falsch benutzt wird, sie nicht gefunden wird, etc.

    Zeige mal deinen Bsp. Code - ich hoffe er ist entsprechend klein.



  • hey. kann übers we nicht an den code ran. werde ab montag aufjedenfall weiter dran arbeiten

    wünsche ein schönes wochenende
    gruß mättes



  • gute morgen, hier der zugehörige Quellcode:
    (reine Spielerei. Teilnehmer.h und Support.h sind von mir erstellte Header(auch die Namespaces). Zu der Bibliothek die ich benutzen will gehören die anderen Header)

    #include "Teilnehmer.h"
    ##include "Teilnehmer.h"
    #include "Support.h"
    #include "flint.h"
    #include "flintpp.h"
    #include "_assert.h"
    #include "kmul.h"
    #include "ripemd.h"
    using namespace Teilnehmer;
    using namespace RSA_maths;
    using namespace Translate;
    
    int main()
    {
    	int i = 234232;
    	LINT k (i);
    	LINT j = 10000 * k;
    	j = j / 10000;
    	keep_window_open();
    }
    

    Mich würde mittlerweile auch ein guter Literaturtipp für VisualStudio interessieren.

    mfg mättes



  • Hier ein Teil der Dokumentation der Bibliothek:

    The cdrom contains the following directories and files:

    Directory files Description
    --------- ----- -----------
    flint/src:

    flint.c C functions for arithmetic and number theory
    flint.h Header file for flint.c
    kmul.c Karatsuba multiplication
    kmul.h Header file for kmul.c
    _assert.h Header file with dummy assertion macros
    ripemd.c Implementation of the hash function RIPEMD160
    ripemd.h Header file for ripemd.c
    flintpp.cpp Implementation of the arithmetic class LINT
    flintpp.h Header file for flintpp.cpp

    flint/src/asm:

    mult.asm Multiplication function mult() in 80x86 assembler
    umul.asm Multiplication function umul() in 80x86 assembler
    sqr.asm Squaring function sqr() in 80x86 assembler
    div.asm Division function div_l() in 80x86 assembler

    flint/lib:

    flinta.lib Library providing the objectcode of the assembler
    functions in OMF format for usage under DOS,
    Windows, OS/2
    flintavc.lib Library providing the objectcode of the assembler
    functions in COFF format for usage with lcc-win32,
    Microsoft Visual C/C++ and other environments
    flinta.a Archive providing the objectcode of the assembler
    functions for usage with emx/gcc under OS/2 and
    Windows (9x, NT)
    libflint.a Archive providing the objectcode of the assembler
    functions for usage with gcc under LINUX (on Pentium
    or compatible hardware platforms)

    flint/lib/dll:

    flint.dll Dynamic Link Library (DLL) providing the C functions
    and data of the FLINT/C package (developed with
    Visual C/C++ V. 6.0)
    flint.def FLINT/C symbols that are exported by flint.dll
    flint.lib COFF import library for flint.dll
    makedll.bat Batch file for the generation of flint.dll and
    flint.lib under Visual C/C++
    dllmain.c Function for initialization of flint.dll



  • Ich nehme an, dass die dir vorliegende Version der flint.lib und flint.dll mit VC++6.0 (uralt) erstellt wurden - das passt nicht zu VS2010.

    Du könntest versuchen, dass flint Projekt auch mit VS2010 zu builden. Oder gar keine Library machen, sondern den Code direkt in dein Projekt einbinden.

    Simon



  • Hi. Dann versuch ich vielleicht einen anderen Weg zum Ziel.
    Was ich brauche ist einfach einen Datentyp der mit große Zahlen in Visualc++ bereitstellt.
    Habe das auch mal mit MPIR(http://www.mpir.org/) und dieser: https://mattmccutchen.net/bigint/ versucht.
    Aber am Einbinden bin ich bisher immer gescheitert. Falls es noch andere(einfachere) Bibliotheken für großen Zahlen in Visualc++ gibt, würde ich die auch mal ausprobieren. Dabei is mir wohl Usability viel, viel wichtiger als Perfomance : )



  • Ok.

    Hier wäre noch eine Alternative die ev. ein wenig einfacher einzubinden ist: http://sourceforge.net/projects/cpp-bigint/

    Ansonsten musst Du halt konkrete Fragen stellen.

    Simon


Anmelden zum Antworten