Echte Zufallszahlen von Server abrufen
-
Der Fehler wurde ja schon genannt, aber so als allgemeine Anmerkung: Neuere Prozessoren (z.B. Intels Ivy Bridge Architektur) bieten auch schon direkt im Prozessor echte Hardwarezufallszahlen mit hohem Durchsatz und echtem Zufall an (RdRand). Für geringe Mengen an echten Zufallszahlen (z.B. als Seed für einen PRNG) bieten auch viele Betriebssysteme schon seit langen Zeiten Echtzufallszahlgeneratoren an, die ihre Entropie aus verschiedenen Quellen im System beziehen (Vorsicht bei virtuellen Maschinen!). Unter Linux z.B. /dev/random, unter Windows gibt's das auch, aber ich weiß nicht, wie es heißt.
-
Danke für's verschieben, hatte übersehen, dass ich mich im falschen Unterforum befand, weil ich über einen Link zu diesem Forum kam.
An CPU hät ich diese
http://www.amazon.de/Intel-Desktop-Prozessor-Q9550-Sockel-L2-Cache/dp/B0012WDMNC
und im Laptop einen Intel(R) Core(TM) i3 CPU M 390 @ 2.67GHzUnterstützen diese die Funktion bereits?
Ich hab nur die "C" entfernt und das extern gelassen, daraufhin kam folgende Fehlermeldung:
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Alle Rechte vorbehalten.C:\Users\Verrain>cd desktop
C:\Users\Verrain\Desktop>gcc t.c -o t
C:\Users\Verrain\AppData\Local\Temp\ccCdSYDJ.o:t.c:(.text+0x1e): undefined refer
ence to\_imp\_\_defineServer' C:\\Users\\Verrain\\AppData\\Local\\Temp\\ccCdSYDJ.o:t.c:(.text+0x34): undefined refer ence to
_imp__defineUser'
C:\Users\Verrain\AppData\Local\Temp\ccCdSYDJ.o:t.c:(.text+0x42): undefined refer
ence to\_imp\_\_getInt' c:/mingw/bin/../lib/gcc/mingw32/4.7.2/../../../../mingw32/bin/ld.exe: C:\\Users\\V errain\\AppData\\Local\\Temp\\ccCdSYDJ.o: bad reloc address 0x20 in section
.eh_fra
me'
c:/mingw/bin/../lib/gcc/mingw32/4.7.2/../../../../mingw32/bin/ld.exe: final link
failed: Invalid operation
collect2.exe: Fehler: ld gab 1 als Ende-Status zurückC:\Users\Verrain\Desktop>
-
Verrain schrieb:
Unterstützen diese die Funktion bereits?
Nein, die Technik ist ziemlich neu (etwas über ein Jahr alt).
Ich hab nur die "C" entfernt und das extern gelassen, daraufhin kam folgende Fehlermeldung:
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Alle Rechte vorbehalten.C:\Users\Verrain>cd desktop
C:\Users\Verrain\Desktop>gcc t.c -o t
C:\Users\Verrain\AppData\Local\Temp\ccCdSYDJ.o:t.c:(.text+0x1e): undefined refer
ence to\_imp\_\_defineServer' C:\\Users\\Verrain\\AppData\\Local\\Temp\\ccCdSYDJ.o:t.c:(.text+0x34): undefined refer ence to
_imp__defineUser'
C:\Users\Verrain\AppData\Local\Temp\ccCdSYDJ.o:t.c:(.text+0x42): undefined refer
ence to\_imp\_\_getInt' c:/mingw/bin/../lib/gcc/mingw32/4.7.2/../../../../mingw32/bin/ld.exe: C:\\Users\\V errain\\AppData\\Local\\Temp\\ccCdSYDJ.o: bad reloc address 0x20 in section
.eh_fra
me'
c:/mingw/bin/../lib/gcc/mingw32/4.7.2/../../../../mingw32/bin/ld.exe: final link
failed: Invalid operation
collect2.exe: Fehler: ld gab 1 als Ende-Status zurückC:\Users\Verrain\Desktop>
Klingt so, als hättest du die Bibliothek selbst nicht dazu gelinkt. Bloß den Header benutzen reicht nicht, irgendwo muss der Code für die Funktionen ja auch gefunden werden.
edit: Du zeigst ja sogar die Kommandozeile . Ja, die Bibliothek fehlt. Da muss noch irgendetwas a la
-lbibliotheksname
hin (und die Bibliothek muss auch gefunden werden). Falls du eine IDE benutzt, gibt es da bestimmt auch eine komfortable Funktion, um das alles automatisch einzurichten. Ansonsten musst du mal gucken, wie das bei mingw genau geht.
-
*hehe*- die Kommandozeile ist mit draufgerutscht
Bin auch gerad bei der Internetrechersche drauf gekommen, dass ich die Bibliothek scheinbar nicht richtig gelinkt habe.
Werde ich mich morgen nochmal mit befassen, wie das unter MingW richtig geht, bis jetzt hab ich einfach nur MingW\lib einen Ordner c erstellt und dort die header Datei, sowie die lib und DLL-Datei reingeschoben, allerdings ist nach dem Ändern, der .h-Datei doch auch die .lib und die .DLL Datei nicht mehr aktuell, oder?
Verwende Emacs, aber die Bibliotheken sind doch im Compiler hinterlegt und nicht in der Entwicklerumgebung, oder? (Sry, aber das einbinden von Bibliotheken ist für mich generell Neuland ^^)
-
Entweder du schreibst in der Befehlszeile manuell -lPfadzurDatei oder du fügst das bequem in einem Menü der IDE hinzu.
-
Verrain schrieb:
Verwende Emacs, aber die Bibliotheken sind doch im Compiler hinterlegt und nicht in der Entwicklerumgebung, oder? (Sry, aber das einbinden von Bibliotheken ist für mich generell Neuland ^^)
Die Bibliotheken selber sind weder im Compiler noch in der IDE, sondern irgendwo im System (aber hoffentlich an einem Ort, wo der Compiler oder die IDE gucken).
Falls du Schwierigkeiten haben solltest, gibt es zu mingw im Netz bestimmt viele Beschreibungen. Falls das nicht reichen sollte, guck/frag mal im hiesigen Compiler und IDE Unterforum nach.
-
Verrain schrieb:
allerdings ist nach dem Ändern, der .h-Datei doch auch die .lib und die .DLL Datei nicht mehr aktuell, oder?
Doch, die beschriebene Schnittstelle ist ja die gleiche, nur dass sie jetzt von C aus und nicht nur von C++ aus zugänglich ist.
-
schau mal hier. eine einfach und günstige lösung für physikalische Zufallserzeugung.
http://www.ibbergmann.org/1851938.htm
beste grüße
-
Also bis jetzt habe ich es noch immer nicht hinbekommen, dass die .lib Datei vom Compiler gefunden wird und auch im Compiler Untertopic konnte mir noch niemand weiterhelfen
-
Verrain schrieb:
Also bis jetzt habe ich es noch immer nicht hinbekommen, dass die .lib Datei vom Compiler gefunden wird und auch im Compiler Untertopic konnte mir noch niemand weiterhelfen
Am einfachsten wird es sein, wenn Du alle heruntergeladenenen und entzippten Dateien in einen einzigen Ordner packst, z.B. nach C:\Users\Verrain\qrdb. In diesem Ordner befindet sich dann Dein Quelltext und die Dateien:
qrbg-c.lib
qrbg-c.dll
qrbg-c.h
t.cDann manövrierst Du in der Eingabeaufforderung zu diesem Ordner (cd C:\Users\Verrain\qrdb) und setzt den Pfad zu GCC:
SET PATH=C:\MinGW\bin;%PATH%
Dann veränderst Du das Include in Deinem Quelltext:
#include "qrbg-c.h" // Pfad weg!
Nun rufst Du GCC auf:
gcc t.c -o t.exe -L.\ -lqrbg-c
Es müsste klappen ( nicht richtig getestet )
viele grüße
ralphEDIT: So, nun habe ich getestet. Du musst G++ als Compiler nehmen:
g++.exe -ot.exe t.c -L.\ -lqrbg-c
-
Vielen vielen Dank
Lustig, dass trotz g++ eine c Datei rauskomt
-
Naaa das war natürlich Müll, da hab ich einen gucken lassen
Natürlich ist es eine .exe Datei