Easeful Opublikowano 3 Stycznia 2010 Udostępnij Opublikowano 3 Stycznia 2010 Czy zna ktoś jakiś kurs, gdzie mógłbym się nauczyć jak tworzyć dll'e w c++? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cekol Opublikowano 3 Stycznia 2010 Udostępnij Opublikowano 3 Stycznia 2010 Jeżel ichodzi o DLLe do GM to jest o tym art. https://gmclan.org/index.php?czytajart=36 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Easeful Opublikowano 3 Stycznia 2010 Autor Udostępnij Opublikowano 3 Stycznia 2010 o to mi chodziło thx :) edit: ale nie mogę skompilować bo error wyskakuje :( e2: bo ja daje w Dev'ie Nowy Projekt --> DLL i on już sam sobie jakąś zupełnie inną strukture wpisuje w to na dzień dobry e3: dobra już działa, ale gm teraz pisze że error defining functions Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Egzekutor Opublikowano 3 Stycznia 2010 Udostępnij Opublikowano 3 Stycznia 2010 Nie bawiłem się dużo dll'ami ale musisz chyba w script's zdefiniować te funkcje :) Tzn. jeśli dll ma np. funkcje ładowania muzyki .ogg z zewnątrz to musi mieć w gm'ie zdefiniowaną tę funkcję. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ZeroXbot Opublikowano 3 Stycznia 2010 Udostępnij Opublikowano 3 Stycznia 2010 Egze: To tylko tak dla ułatwienia, żeby nie wywoływać jednej funkcji długim kodem. Easeful: Posprawdzaj zwracane typy danych oraz argumenty Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 3 Stycznia 2010 Udostępnij Opublikowano 3 Stycznia 2010 Michaś, sypnij kodem tutaj lub mi na PM a wyjaśnię Ci w czym problem Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Easeful Opublikowano 4 Stycznia 2010 Autor Udostępnij Opublikowano 4 Stycznia 2010 Ok. No to tak: Daję Dev C++ --> Nowy Projekt --> DLL Tworzą mi się automatycznie dwa pliki, które mają już jakąś treść: dllmain.cpp /* Replace "dll.h" with the name of your header */ #include "dll.h" #include <windows.h> DllClass::DllClass() { } DllClass::~DllClass () { } BOOL APIENTRY DllMain (HINSTANCE hInst /* Library instance handle. */ , DWORD reason /* Reason this function is being called. */ , LPVOID reserved /* Not used. */ ) { switch (reason) { case DLL_PROCESS_ATTACH: break; case DLL_PROCESS_DETACH: break; case DLL_THREAD_ATTACH: break; case DLL_THREAD_DETACH: break; } /* Returns TRUE on success, FALSE on failure */ return TRUE; } dll.h #ifndef _DLL_H_ #define _DLL_H_ #if BUILDING_DLL # define DLLIMPORT __declspec (dllexport) #else /* Not BUILDING_DLL */ # define DLLIMPORT __declspec (dllimport) #endif /* Not BUILDING_DLL */ class DLLIMPORT DllClass { public: DllClass(); virtual ~DllClass(void); private: }; #endif /* _DLL_H_ */ Ja zrobiłem tak, że z dll.h wywaliłem wszystko i dałem to Tymona, czyli: dll.h #include<windows.h> #define export extern "C" __declspec(dllexport) export double GMBeep( double a1, double a2 ) { Beep( a1, a2 ); } export char* GMText( void ) { return "Jakis tekst przekazany przez funkcje biblioteki."; } export double GMAdd( double l1, double l2 ) { return l1 + l2; } Ale przy kompilacji wyskoczył error na linijce #include "dll.h" Sie wkurzyłem i usunąłem wszystko. Potem od nowa robiłem ale nie wywalałem tego z dll.h, tylko skompilowałem to co mi od początku kompilator dał. No i sie skompilowało. No i wtedy dałem do tego dll.h dopiero po kompilacji ten kod tymona. Podejrzewam, że mimo to że napisało Done to i tak sie nie skompilowało bo potem dałem w gm, create obiektu: GML GMBeep = external_define( 'dll.dll', 'GMBeep', dll_stdcall, ty_real, 2, ty_real, ty_real ); GMText = external_define( 'dll.dll', 'GMText', dll_stdcall, ty_string, 0 ); GMAdd = external_define( 'dll.dll', 'GMAdd', dll_stdcall, ty_real, 2, ty_real, ty_real ); show_message( external_call( GMText ) ); show_message( 'Suma 1111 i 7777 to ' + string( external_call( GMAdd, 1111, 7777 ) ) ); show_message( 'Beep!' ); external_call( GMBeep, 1000, 1000 ); external_free( 'dll.dll' ); No i error w gm. Chyba wszystko to źle od początku robie, nie? Gdzie ja mam ten kod co tymon dał w tym kursie wrzucić? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ZeroXbot Opublikowano 4 Stycznia 2010 Udostępnij Opublikowano 4 Stycznia 2010 Przy robieniu projektu zaznacz, żeby był pusty. Bez żadnych prekompilowanych plików źródłowych, czy co to tam jest. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Easeful Opublikowano 4 Stycznia 2010 Autor Udostępnij Opublikowano 4 Stycznia 2010 Nie ma tu takiej opcji ;/ e: a jak dam empty project to mi to kompiluje na .exe Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 4 Stycznia 2010 Udostępnij Opublikowano 4 Stycznia 2010 Przerażasz mnie. Daj pusty (empty) projekt i potem w opcjach projektu zrób to: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się