Witam
Mam taki mały problemik. Otóż przez długi czas pisałem różne programy w przyjemnym dla mnie delphi, jednak stwierdziłem, że warto iść z duchem czasu i przesiąść sie na jeszcze przyjemniejszy język C++ :P Po napisaniu kilku prostych programików, chciałem napisać programik który używałby liczb pseudolosowych. No i tutaj troszeczkę się zawiodłem, gdyż srand i rand nie działały tak dobrze jak randomize i random w delphi. W delphi losowość liczb była mocno odczuwalna, natomiast w C pojawia się pewna regularność.
Postanowiłem, poczytać, po google-ować i stwierdziłem, że najlepiej będzie napisać dll-kę w delphi z funkcją losującą i dołączenie jej do programu w C++. Kiedy użyłem biblioteki w programie w delphi funkcja działała prawidłowo, natomiast w C++ zawsze zwraca 1. Poszukałem, poczytałem i nie udało mi się znaleźć odpowiedzi :(
Mam taki kodzik w c++
double losowy(int m){
typedef double( * MYPROC )( double );
MYPROC randm;
double L;
HINSTANCE hDll;
hDll = LoadLibrary( "rand.dll" );
if (hDll != NULL){
randm = (MYPROC) GetProcAddress(hDll,"losuj");
if (randm != NULL){
L=randm(m);
}
FreeLibrary( hDll );
}
return L;
}
Bazowałem na tym artykule: http://cpp0x.pl/kursy/Kurs-WinAPI-C++/Zaawansowane/DLL/198
Z początku myślałem, że nie ładuje biblioteki, ale po usunięciu 1 if-a efekt był ten sam - nie ważne jakie było m, to i tak zwracało 1. Próbowałem jeszcze innych zmian i dokładniejszego przeanalizowania elementów kodu, bez pożądanych rezultatów :(