GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» player não consegue andar
por lovn7 Qui 21 Nov 2024, 13:33

» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22

» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31

» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23

» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49

» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58

» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36

» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36

» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33

» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51

» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28

» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18

» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08

» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10

» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16

» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40

» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01

» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45

» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34

» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28

» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48

» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54

» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14

» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50


[Tutorial]Criando e usando uma DLL

+5
Alexandre Dias
LCS
Luca$
Markituh
Jiraya
9 participantes

Ir para baixo

[Tutorial]Criando e usando uma DLL Empty [Tutorial]Criando e usando uma DLL

Mensagem por Jiraya Qua 15 Dez 2010, 19:14

AS seguintes ferramentas seram necessárias para concluir esse tutorial com exito!
voce precisara ter os seguintes programas
Game Maker Pro
Dev-C++

voce pode usar outras linguagens para criar sua dll tbm
como por exemplo
delphi,c++/c/Visual Basic ect...
mas neste caso iremos usar a linguagem de programação c++ acompanhado do software/IDE DEV-C++
============================INICIANDO=====================================
primeiro vamos criar a dll Very Happy
abra o programa DEV-C++
clique em
Arquivo>>Novo>>Projeto
uma janelinha ira se abrir
como na imagem
[Tutorial]Criando e usando uma DLL NewProject
clique no icone DLL e de um nome ao seu projeto, eu dei o nome ao meu de "MinhaDLL" :3
entao aparecera a janela para salvar o arquivo, como na imagem abaixo.
[Tutorial]Criando e usando uma DLL SaveProject
após isso aparecera no seu programa os seguintes códigos
[Tutorial]Criando e usando uma DLL CodeProject
altera ele em algumas partes, para que fique facil manipula-lo
deixe o código assim
Código:

#ifndef _DLL_H_
#define _DLL_H_

#if BUILDING_DLL
# define GML __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
#endif /* Not BUILDING_DLL */
//aqui vc colocara as suas funçoes ;]

#endif /* _DLL_H_ */
ok, o arquivo Header ja esta pronto, agora precisamos preparar o arquivo .cpp, vai para a aba "[*] dllmain.cpp"
[Tutorial]Criando e usando uma DLL DLLProject
altera este código
[Tutorial]Criando e usando uma DLL Code2Project
para esse
Código:

/* Replace "dll.h" with the name of your header */
#include "dll.h"
#include <windows.h>
//aqui é a area onde as funçoes ficaram


//====================================
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;
}
pronto, a dll esta pronta começar!
vamos criar uma simples funçao agora
vá para a aba "[*] dll.h"
essa aba é onde vc declara a funçao
[Tutorial]Criando e usando uma DLL DLLHProject
agora vamos criar a funçao digite isso na area
Código:

#ifndef _DLL_H_
#define _DLL_H_

#if BUILDING_DLL
# define GML __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
#endif /* Not BUILDING_DLL */
//aqui vc colocara as suas funçoes ;]
extern "C" GML double soma(double x,double y);//essa é a nossa funçao, agora ela esta declarada!
//double x e double y sao argumentos.                     

#endif /* _DLL_H_ */
agora va para o arquivo "[*] dllmain.cpp"
[Tutorial]Criando e usando uma DLL DLLProject
agora teremos que fazer com que a funçao seja executada
digite o seguinte código na area
Código:

/* Replace "dll.h" with the name of your header */
#include "dll.h"
#include <windows.h>
//aqui é a area onde as funçoes ficaram
extern "C" GML double soma(double x,double y)//essa é a função com os comandos dados.
{
return (x+y);   
}

//====================================
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;
}
agora pressione F9 para testar o seu projeto!
[Tutorial]Criando e usando uma DLL MenuProject
se aparecer a seguinte mensagem
[Tutorial]Criando e usando uma DLL MessageProject
quer dizer que sua dll funcionou perfeitamente :­D
agora vamos testa-la no game maker GM8 finalmente \o/

===================AGORA NO GAME MAKER==============================
abra o game maker
salve o jogo na mesma pasta onde vc salvou a dll
e entao crie um script e de o nome de DLLInit e entao digite o seguinte codigo nesse script
[DLLInit]
Código:

dll="MinhaDLL.dll";
global.SOMA=external_define(dll,"soma",dll_stdcall,ty_real,2,argument0,argument1);
/*
argument0=nome da dll
argument1=nome da funçao
argument2=tipo de resposta
argument3=tipo de retorno, se o valor da funçao retornara a string ou valor real.
argument4=numero de argumentos que a funçao tem
argument5=double x
argument6=double y
*/
ficara assim
[Tutorial]Criando e usando uma DLL GMLCode
crie outro script e de o nome de DllSoma e digite o seguinte código
Código:

return (external_call(global.SOMA,argument0,argument1));//retorna ao resultado da funçao da dll
ficara assim
[Tutorial]Criando e usando uma DLL GMLCode2

QUASE LA :­D
agora vamos testar para ver se esta funcionando
crie um objeto e de qualquer nome a ele
add o evento Create e arraste o d´n ´d Execute code
[Tutorial]Criando e usando uma DLL GMLObject
digite o seguinte código
Código:

DllInit();//inica a dll
soma=DllSoma(8,8);//executa a funçao da dll
show_message(soma);//mostra uma mensagem na tela com o valor do retorno da dll
crie uma room e coloque esse objeto na room
se aparecer uma mensagem mostrando o numero 16
[Tutorial]Criando e usando uma DLL GMLMessage
PARABENS VOCE CONCLUIU O TUTORIAL COM EXITO!
a dll funcionou e agora voce tera portas abertas para criar outras dll Very Happy
Download do Exemplo
====================OBRIGADO POR LEREM MEU PEQUENO PRIMEIRO TUTORIAL==================


Última edição por Jiraya em Qua 15 Dez 2010, 20:44, editado 1 vez(es)
Jiraya
Jiraya

Games Ranking : Nota A

Notas recebidas : A+A
Data de inscrição : 20/03/2010
Reputação : 108
Número de Mensagens : 1134
Prêmios : [Tutorial]Criando e usando uma DLL Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://www.facebook.com/seito.washiro.7

Ir para o topo Ir para baixo

[Tutorial]Criando e usando uma DLL Empty Re: [Tutorial]Criando e usando uma DLL

Mensagem por Markituh Qua 15 Dez 2010, 20:02

Pequeno? Que é isso, cara! Tá grande Very Happy Eu já tinha visto sobre como fazer na Game Maker Comunnity, foi lá que aprendi a fazer minha primeira DLL =D Eu realmente prefiro o C++ para fazer, pois no Delphi é deveras complicado(que nada, eu que não sabia definir).

OFF: Cabei de sacar, o novo Rank entrou em vigor Happy
Markituh
Markituh

Games Ranking : Sem avaliações

Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios : [Tutorial]Criando e usando uma DLL Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Tutorial]Criando e usando uma DLL Empty Re: [Tutorial]Criando e usando uma DLL

Mensagem por Luca$ Qua 15 Dez 2010, 20:34

Legal cara
Eu nao fiz
pq nao tenho o dev-c++
mas se tivesse eu concerteza fazeria seu tuto =D
Luca$
Luca$

Games Ranking : Nota D

Notas recebidas : D-C
Data de inscrição : 10/10/2010
Reputação : 1
Número de Mensagens : 582
Prêmios : [Tutorial]Criando e usando uma DLL Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Tutorial]Criando e usando uma DLL Empty Re: [Tutorial]Criando e usando uma DLL

Mensagem por LCS Qua 15 Dez 2010, 20:44

cara muito bom mesmo como sempre cada vez mais complicado kkkk
mas ta muito avançado pra mim

lol se isso é um tuto pequeno nem quero ver quando postar um grande
valeu orochi
continua sempre assim cara
10 pra tu
LCS
LCS

Games Ranking : Nota A

Notas recebidas : A
Data de inscrição : 09/03/2010
Reputação : 43
Número de Mensagens : 1035
Prêmios : [Tutorial]Criando e usando uma DLL Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 2 Prata x 1 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.www.ww.www

Ir para o topo Ir para baixo

[Tutorial]Criando e usando uma DLL Empty Re: [Tutorial]Criando e usando uma DLL

Mensagem por Alexandre Dias Qua 15 Dez 2010, 20:53

Tava com o zoom ligado aqui no linux e queria diminuir a letra. Cliquei no - . Só depois vi que implantaram sistema de reputação . Malz ae e___e

Enfim, por ter C++ envolvido, eu andei lendo os códigos. Pena que não foi possível prosseguir, li muito pouco sobre diretivas e as únicas que eu conheço são include e define. Ouvi dizer que sempre que puder evitar a define nos códigos é bom.

Uma vez estive compilando uma calculadora e tinha 2 defines para imprimir na tela pro usuário digitar um valor. Bugou o programa todo, tive que digitar manualmente e__e

Ps: Consertei minha burrada te dando crédito em outro post.
Ps2: Você podia fazer uns tutoriais de C++ pro fórum, é um dos melhores programadores daqui. =D
Alexandre Dias
Alexandre Dias

Data de inscrição : 13/10/2010
Reputação : 8
Número de Mensagens : 397
Prêmios : [Tutorial]Criando e usando uma DLL Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Tutorial]Criando e usando uma DLL Empty Re: [Tutorial]Criando e usando uma DLL

Mensagem por Jiraya Qua 15 Dez 2010, 21:17

Vlw Pessoal!
vlw Naz!
o define é como uma constant, por tanto nao pode ser alterada!
por isso nao se pode usar um define como variavel ;]
s, talves eu crie mais tutoriais sobre c++ aqui no forum!
Jiraya
Jiraya

Games Ranking : Nota A

Notas recebidas : A+A
Data de inscrição : 20/03/2010
Reputação : 108
Número de Mensagens : 1134
Prêmios : [Tutorial]Criando e usando uma DLL Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://www.facebook.com/seito.washiro.7

Ir para o topo Ir para baixo

[Tutorial]Criando e usando uma DLL Empty Re: [Tutorial]Criando e usando uma DLL

Mensagem por bill gates Zona sul Qui 16 Dez 2010, 03:45

Jiraya adorei seu tutorial cara , eu estava querendo saber mesmo como criar uma dll , nossa foi d+ consegui fazer e deu certo aqui uahua !! , Jiraya da continuidade a essa materia cara , se possivel poderia dar um exemplo simples de dll de efeito sonoro tipo um delay ou algum outro efeito de som , vlw

10/10

www.trsflash.blogspot.com
bill gates Zona sul
bill gates Zona sul

Data de inscrição : 02/02/2010
Reputação : -2
Número de Mensagens : 144
Prêmios : [Tutorial]Criando e usando uma DLL Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.tiagoguitarra.blogspot.com

Ir para o topo Ir para baixo

[Tutorial]Criando e usando uma DLL Empty Re: [Tutorial]Criando e usando uma DLL

Mensagem por Salathiel Qui 16 Dez 2010, 11:01

Parabéns cara, muito legal mesmo.
Pergunta:
Sempre que for fazer uma dll tem que usar external_define no gm?
Salathiel
Salathiel

Data de inscrição : 29/05/2010
Reputação : 3
Número de Mensagens : 346
Prêmios : [Tutorial]Criando e usando uma DLL Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://salathiel1337.blogspot.com/

Ir para o topo Ir para baixo

[Tutorial]Criando e usando uma DLL Empty Re: [Tutorial]Criando e usando uma DLL

Mensagem por Markituh Qui 16 Dez 2010, 11:11

Salathiel (Qui Dez 16, 2010 11:01 am) escreveu:Parabéns cara, muito legal mesmo.
Pergunta:
Sempre que for fazer uma dll tem que usar external_define no gm?
Sim. External define é o que define as funções da DLL
Markituh
Markituh

Games Ranking : Sem avaliações

Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios : [Tutorial]Criando e usando uma DLL Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Tutorial]Criando e usando uma DLL Empty Re: [Tutorial]Criando e usando uma DLL

Mensagem por Isaque Onix Seg 30 Jul 2012, 18:06

aaah com o delphi7 é td diferente :'(

Bom tuto mano, pena q num deu aki
Isaque Onix
Isaque Onix

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 15/08/2010
Reputação : 147
Número de Mensagens : 1626
Prêmios : [Tutorial]Criando e usando uma DLL Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Unity
  • C#
  • Outros


http://spyreserver.16mb.com

Ir para o topo Ir para baixo

[Tutorial]Criando e usando uma DLL Empty Re: [Tutorial]Criando e usando uma DLL

Mensagem por Kapoty Seg 30 Jul 2012, 18:41

Uma pergunta :

Como faço para retornar uma string? tal como "Pontos = "+x
Kapoty
Kapoty

Games Ranking : Nota B

Notas recebidas : E + D + C + B + D +B + A
Data de inscrição : 05/11/2011
Reputação : 22
Número de Mensagens : 635
Prêmios : [Tutorial]Criando e usando uma DLL Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Tutorial]Criando e usando uma DLL Empty Re: [Tutorial]Criando e usando uma DLL

Mensagem por Jiraya Seg 30 Jul 2012, 19:14

Código:

extern "C" __declspec(dllexport) char* SITE()
{
return("Game Maker Brasil");
}

caso queira retornar a uma string como gml.

Código:

#include <iostream>
#include <string>
#include <stringstream>
#include <cstring>

template<class T>
extern "C" __declspec(dllexport) char* SHOW_MESSAGE(T _val)
{
std::sstream _parse;
_parse<<_val;
return(_parse.str().c_str());
}

Jiraya
Jiraya

Games Ranking : Nota A

Notas recebidas : A+A
Data de inscrição : 20/03/2010
Reputação : 108
Número de Mensagens : 1134
Prêmios : [Tutorial]Criando e usando uma DLL Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://www.facebook.com/seito.washiro.7

Ir para o topo Ir para baixo

[Tutorial]Criando e usando uma DLL Empty Re: [Tutorial]Criando e usando uma DLL

Mensagem por Isaque Onix Seg 30 Jul 2012, 20:14

Jiraya, vc tem outros posts e tutos sobre dlls? sou iniciante em delphi e gostaria de aprender +
Isaque Onix
Isaque Onix

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 15/08/2010
Reputação : 147
Número de Mensagens : 1626
Prêmios : [Tutorial]Criando e usando uma DLL Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Unity
  • C#
  • Outros


http://spyreserver.16mb.com

Ir para o topo Ir para baixo

[Tutorial]Criando e usando uma DLL Empty Re: [Tutorial]Criando e usando uma DLL

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos