DLL między językami

0

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 :(

3

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

Z deszczu pod rynne (w sumie w tym wypadku to z rynny w deszcz)

No i tutaj troszeczkę się zawiodłem, gdyż srand i rand nie działały tak dobrze jak randomize i random w delphi.
bo nie uzywa sie srand

http://en.cppreference.com/w/cpp/numeric/random

natomiast w C pojawia się pewna regularność.

no wlasnie uzywales biblotek C a nie C++

że najlepiej będzie napisać dll-kę w delphi z funkcją losującą i dołączenie jej do programu w C++.

to jest najgorszy pomysl jaki mogles wymyslec

losuje 1 bo moze masz blad w kodzie w delphi (w tym DLL).

a tak poza tematem. Wez sobie jakis normalny jezyk. Nie delphi ktory jest z epoki dinozaurow czy C++ ktory jest jednym z trudniejszych jezykow do nauki

1

Podejrzenie, czy zastosowano odpowiednia konwencja wywołania funkcji?

5

Jeśli Delphi jest z epoki dinozaurów, to C++ także. Delphi 1 powstało w 1995 roku. C++ to 1983. Pascal, z którego wywodzi się Delphi, to rok 1970. Natomiast C++ wywodzi się z C, które pojawiło się w 1972.
Zarówno DELPHI jak i C++ są cały czas rozwijane. Więc skąd ten wniosek, że Delphi to język z epoki dinozaurów?

1 użytkowników online, w tym zalogowanych: 0, gości: 1