KozakPL Opublikowano 8 Lipca 2009 Udostępnij Opublikowano 8 Lipca 2009 Siema.Mam problem.Pisze swój 1 DLL i jego treść to: #include<windows.h> #define export extern "C" __declspec(dllexport) //Dzwiek export double Dzwiek( double dz1, double dz2 ) { Beep( dz1, dz2 ); } //Obliczenia export double Dod( double d1, doubled2 ) { return d1 + d2; } export double Ode( double o1, double o2 ) { return o1 - o2; } export double Mno( double m1, double m2 ) { return m1 * m2; } export double Dzi( double dz1, double dz2 ) { return dz1 / dz2; } a Błąd: /* Replace "dll.h" with the name of your header */ #include "dll.h" <<-----------------------------------------tu << #include <windows.h> #include <stdio.h> #include <stdlib.h> DLLIMPORT void HelloWorld () { MessageBox (0, "Hello World from DLL!\n", "Hi", MB_ICONINFORMATION); } 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; } Proszę o pomoc :D edit: Na dole są błędy,od góry: Line2:In file included from dllmain.c Line6:syntax error before string constant Line7:syntax error before "void" [Build Error] [dllmain.o] Error 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
47xxxxxxxx Opublikowano 8 Lipca 2009 Udostępnij Opublikowano 8 Lipca 2009 Umiesz czytać?Zamiast "dll.h" masz wpisać nazwe TWOJEGO nagłówka.Na przykład: #ifndef __MAIN_H__ #define __MAIN_H__ #include <windows.h> /* To use this exported function of dll, include this header * in your project. */ #ifdef BUILD_DLL #define DLL_EXPORT __declspec(dllexport) #else #define DLL_EXPORT __declspec(dllimport) #endif #ifdef __cplusplus extern "C" { #endif void DLL_EXPORT SomeFunction(const LPCSTR sometext);// tutaj masz wpisać Twoje funkcje #ifdef __cplusplus } #endif #endif // __MAIN_H__ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
KozakPL Opublikowano 8 Lipca 2009 Autor Udostępnij Opublikowano 8 Lipca 2009 Aha...Ale to co ty podałeś to jest całkiem inny kod.Będzie on pasował do każdego innego dll'a? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
47xxxxxxxx Opublikowano 8 Lipca 2009 Udostępnij Opublikowano 8 Lipca 2009 Ja mam taki kod w main.cpp: #include "main.h" // a sample exported function void DLL_EXPORT SomeFunction(const LPCSTR sometext) { MessageBoxA(0, sometext, "DLL Message", MB_OK | MB_ICONINFORMATION); } BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { switch (fdwReason) { case DLL_PROCESS_ATTACH: // attach to process // return FALSE to fail DLL load break; case DLL_PROCESS_DETACH: // detach from process break; case DLL_THREAD_ATTACH: // attach to thread break; case DLL_THREAD_DETACH: // detach from thread break; } return TRUE; // succesful } i ten co podałem.U mnie działa. EDIT:Każdy kompilator ma chyba inne kody.Więc daj swój kod i w main.h w nagłowku daj zamiast "dll.h" daj "main.h" Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
KozakPL Opublikowano 8 Lipca 2009 Autor Udostępnij Opublikowano 8 Lipca 2009 A mi ten kod nie działa xD ten co podał 47xxxxxxxx działa xD Ale nowy problem: Nazwa dll'a to: Kalkulator.dll i jest on w tym samym folderze co plik Programu(Gama Maker File).W Create oKalkulator dałem kod GML /*Wczytaj Funkcje DLL*/ zDzwiek = external_define( 'Kalkulator.dll', 'Dzwiek', dll_stdcall, ty_real, 2, ty_real, ty_real ); zDod = external_define( 'Kalkulator.dll', 'Dod', dll_stdcall, ty_real, 2, ty_real, ty_real ); zOde = external_define( 'Kalkulator.dll', 'Ode', dll_stdcall, ty_real, 2, ty_real, ty_real ); zMno = external_define( 'Kalkulator.dll', 'Mno', dll_stdcall, ty_real, 2, ty_real, ty_real ); zDzi = external_define( 'Kalkulator.dll', 'Dzi', dll_stdcall, ty_real, 2, ty_real, ty_real ); external_free( 'Kalkulator.dll' ); i dostaje(chyba gratis od firmy) błąd: ERROR in action number 1 of Create Event for object oKalkulator: Error defining an external function. Urzywam Dev C++ 4.9.9.2 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
adrianpl Opublikowano 8 Lipca 2009 Udostępnij Opublikowano 8 Lipca 2009 Kalkulator jest już w GM Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
KozakPL Opublikowano 8 Lipca 2009 Autor Udostępnij Opublikowano 8 Lipca 2009 yyyyy nie rozumiem xD aaaa...chodzi ci o to że jest już wbudowany i nie trzeba dlla?No wiem...Tyle że postanowiłem się nauczyć pisania DLL'i i chcę zrobić go z dll'em...coś prostego na początek Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
47xxxxxxxx Opublikowano 8 Lipca 2009 Udostępnij Opublikowano 8 Lipca 2009 <offtop>Lepiej nie używaj Dev - C++ bo już od miliardów lat nie jest updatowany.Ostatnia akcja w Dev - C++ była w 2005 roku...Dlatego używaj Code::Blocks.</offtop> <top>Trudno zrobić DLLa dla GMa.Bo GM jest napisany w Delphi, a nie w C++.Najlepiej zapytaj się na Game Maker Community jak trzeba robić DLLe w C++ dla GMa.</top> Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
KozakPL Opublikowano 8 Lipca 2009 Autor Udostępnij Opublikowano 8 Lipca 2009 Ściągnołem ten program Jak w nim się tworzy DLL? i jak sie kompiluje xD Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
47xxxxxxxx Opublikowano 8 Lipca 2009 Udostępnij Opublikowano 8 Lipca 2009 File:New:Project:Dynamic Link Liblary , a kompilusie się naciskając Build Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
KozakPL Opublikowano 8 Lipca 2009 Autor Udostępnij Opublikowano 8 Lipca 2009 Dzieki ;] Fajny ten Kompilator :D I bez problemu skompilował :D Dziex ;] Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
47xxxxxxxx Opublikowano 8 Lipca 2009 Udostępnij Opublikowano 8 Lipca 2009 Możesz w tym nie tylko robić w C++ ale też w innych językach :] Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
KozakPL Opublikowano 8 Lipca 2009 Autor Udostępnij Opublikowano 8 Lipca 2009 Hehe...trzeba znać xD a tak ogólnie to kiedyś widziałem przykład Wykorzystania funkcji C++ w Game Maker i był dll...ale nie moge go teraz znaleźć ;/ Da ktoś link? EDIT: Już mam.Jak ktoś chce to https://gmclan.org/index.php?sciagnijplik=147 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Crackkk-GM Opublikowano 8 Lipca 2009 Udostępnij Opublikowano 8 Lipca 2009 <offtop>Lepiej nie używaj Dev - C++ bo już od miliardów lat nie jest updatowany.Ostatnia akcja w Dev - C++ była w 2005 roku...Dlatego używaj Code::Blocks.</offtop> <top>Trudno zrobić DLLa dla GMa.Bo GM jest napisany w Delphi, a nie w C++.Najlepiej zapytaj się na Game Maker Community jak trzeba robić DLLe w C++ dla GMa.</top> A myślałeś o tym, że to nie robi różnicy w czym jest napisany DLL ? Polecam MSVC++ a co do tworzenia DLLi pod GMa: https://gmclan.org/index.php?czytajart=36 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
KozakPL Opublikowano 8 Lipca 2009 Autor Udostępnij Opublikowano 8 Lipca 2009 Wiem xD Z tego się uczę i mam prośbę jak ktoś może to niech da kod jakiegoś zwykłego Dll'ka...tak do nauki ;p Popatrze jak to wygląda ;] 2 czy 3 funkcje wystarczą :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 8 Lipca 2009 Udostępnij Opublikowano 8 Lipca 2009 kod którego rządasz jest w tym arcie z którego się rzekomo uczysz Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
KozakPL Opublikowano 8 Lipca 2009 Autor Udostępnij Opublikowano 8 Lipca 2009 wiem...ale nie rozumiesz...ty podałeś coś takiego: export char* GMText( void ) { return "Jakis tekst przekazany przez funkcje biblioteki."; } A ja bym chciał zerknąć na coś bardziej rozbudowanego typu export char* GMText( char* a1, double a2 ) { return "bla bla" + a1 return "blaasdfs" + a2 //itp } Albo coś podobnego E:Sry...To art Tymona ;] Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 8 Lipca 2009 Udostępnij Opublikowano 8 Lipca 2009 naucz się pierw programować cokolwiek logicznego w cpp a potem bierz się za to. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
KozakPL Opublikowano 8 Lipca 2009 Autor Udostępnij Opublikowano 8 Lipca 2009 A to co? Chiński? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 8 Lipca 2009 Udostępnij Opublikowano 8 Lipca 2009 naucz się pierw programować cokolwiek logicznego w cpp programować cokolwiek logicznego logicznego !! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
KozakPL Opublikowano 8 Lipca 2009 Autor Udostępnij Opublikowano 8 Lipca 2009 Rozumiem xD Spokojnie xD Ale zwykłym c++ czy WinApi? xD Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 8 Lipca 2009 Udostępnij Opublikowano 8 Lipca 2009 u Ciebie ewidentnie brak jakiej kolwiek logiki, nie znasz żadnych zasad pisania w surowym cpp, od niego zacznij Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
KozakPL Opublikowano 8 Lipca 2009 Autor Udostępnij Opublikowano 8 Lipca 2009 #include <stdio.h> int main( ) { printf("Hellow"); getchar( ); return 0; } :PPPP Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 8 Lipca 2009 Udostępnij Opublikowano 8 Lipca 2009 wow, odpalić szablon konsoli z deva to i ja potrafie, Ty mi teraz opisz co każda linia robi Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
47xxxxxxxx Opublikowano 8 Lipca 2009 Udostępnij Opublikowano 8 Lipca 2009 #include <iostream>//klawiatura (chyba;p ) using namespace std;// ? int main()//glowna funkcja { int liczba = 0; cout << "Podaj pierwsza liczbe\n"; cin >> liczba; cout << "Wybrales liczbe:"; cout << liczba; int liczba2 = 0;//liczba druga cout << "\nPodaj druga liczbe\n";//wiadomosc cin >> liczba2;//pytamy się o drugą liczba cout << "Wybrałes liczbe:";//pokazujemy cout << liczba2 << "\n";//wyswietlamy wiadomosc int wybor;//zmienna wybor cout << "Co zrobic?\n1 - Dodaj\n2 - Odejmij\n3 - Pomnoz\n4 - Podziel\n";//tekst cin >> wybor;//pytamy sie o wybor switch (wybor) { case 1:cout << "Wynik:" << liczba+liczba2;break;wyswietlemy wynik dodawnia case 2:cout << "Wynik:" << liczba-liczba2;break;//odejmowania case 3:cout << "Wynik:" << liczba*liczba2;break;//mnozenia case 4:cout << "Wynik:" << liczba/liczba2;break;//dzielenia default:cout << "Wybierz:#Dodaj#Odejmij#Pomnóz#Podziel, inaczej nic sie nie stanie";//wyswietlamy tekst } int wyjsc;//tworzymy zmienna wyjscie cout << "\nWyjsc z programu?\n1 - Tak\n2 - Nie\n";//wyswietlamy wiadomosc cin >> wyjsc;//pytamy o wyjscie switch (wyjsc) { case 1: return 0;break;//the end case 2: printf("\n\n\n\n\n");main();break;//jesli wybierzemy 2 to piszemy pięć enterów i włączamy funkcje main robiąc pętle } } Mój pierwszy program w C++ :) Masz się poucz ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
KozakPL Opublikowano 8 Lipca 2009 Autor Udostępnij Opublikowano 8 Lipca 2009 Spox tylko mi zaraz nie powiedz że tyle to w necie pisze... Linia1: dyrektywa preprocesowa(tak pisze w książce[musiałem zajrzeć bo przyznam że nie wiedziałem jak to sie zwie xD]) Linia2: funkcja główna Linia3: otwarcie programu Linia4: funkcja wyświetlająca(w stdio bo w iostream jest cout ;p) Linia5: czeka na dowolny klawisz Linia6: zwraca wartość 0 do systemu Linia7: zamyka program Kiedyś się tego uczyłem ale zwykłego c++ Edit:Dziex 47xx...xx ale myślałem o DLL(che ogarnąć jak wygląda taki dll który coś robi[bo ten który jest TU to tylko wyświetla napis]) xD Ale dziex za starania ^^ Nawet Komentarze dodałeś ^^ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
progio! Opublikowano 8 Lipca 2009 Udostępnij Opublikowano 8 Lipca 2009 btw zamiast stdio.h daje się już cstdio i jest to biblioteka C, w c++ korzysta się ze strumienii :> Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
KozakPL Opublikowano 8 Lipca 2009 Autor Udostępnij Opublikowano 8 Lipca 2009 cstdio? Nie wiedziałem xD Ehh...więc jak?Poda ktoś kod jakiegoś małego Dll'ka do nauki?może być 39DLL lub GMSock...jak kto woli xD <--żart xD Będę wdzięczny Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
KozakPL Opublikowano 8 Lipca 2009 Autor Udostępnij Opublikowano 8 Lipca 2009 (edytowane) Hellow? xD 2post. Warn Mimek Edytowane 8 Lipca 2009 przez Mimek Warn +1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Crackkk-GM Opublikowano 9 Lipca 2009 Udostępnij Opublikowano 9 Lipca 2009 Lol masz: Main.cpp: #include<math.h> #define _export extern "C" __declspec( dllexport ) _export double Degtorad( double deg ) { return( deg * 3.14 / 180 ); } Kompilujesz i masz. Pasi? Nie nauczysz się patrząc na sam przykład. Musisz zrozumieć co można zrobić i jak to zrobić. Sam też na początku nie wiedziałem jak napisać głupią dllke w C++. 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ę