Login

Esqueci minha senha

Últimos assuntos
» Pedido de the sims 2d
por PeeWeeTM Hoje à(s) 10:00 pm

» [Dúvida]Comandos de grid
por Kyomaro Hoje à(s) 9:18 pm

» [Tutorial] Máquina de estados finitos
por anth201 Hoje à(s) 9:05 pm

» [Pergunta] GM:S no pendrive?
por snurfe Hoje à(s) 8:13 pm

» Problemas com jogo de nave
por Isaque Onix Hoje à(s) 8:12 pm

» A- KIIRO KURO - GARAGE VERSION
por PeeWeeTM Hoje à(s) 7:52 pm

» [GMK DISPONÍVEL]#CoJ - Complete o Jogo
por moisesBR Hoje à(s) 4:22 pm

» Pokémon - The Japan's legend
por Rodrigo Santiago Hoje à(s) 2:47 pm

» [pedido] idéias pra jogo educativo - medicamentos
por jenipher.cezarini Hoje à(s) 2:45 pm

» YoYo Games Win BIG Competition!
por jenipher.cezarini Hoje à(s) 2:27 pm

Facebook
ADS
ADS

[Tutorial]Criando e usando uma DLL 5 4 8

[Tutorial]Criando e usando uma DLL

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Qualidade [Tutorial]Criando e usando uma DLL

Mensagem por Jiraya em Qua Dez 15, 2010 6:14 pm

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

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.

após isso aparecera no seu programa os seguintes códigos

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"

altera este código

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

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"

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!

se aparecer a seguinte mensagem

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

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


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

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

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 Dez 15, 2010 7:44 pm, editado 1 vez(es)

___________






Jiraya
Administrador
Administrador

Ranking: Nota A
Alerta:
0 / 1000 / 100

Número de Mensagens: 976
Data de inscrição: 20/03/2010
Versão:
  • Game Maker 8.1
  • Game Maker Studio: Master

Notas recebidas: A+A
Reputação: 83

Prêmios
   : 1
   : 0
   : 1

Ver perfil do usuário https://www.facebook.com/seito.washiro.7

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial]Criando e usando uma DLL

Mensagem por Markituh em Qua Dez 15, 2010 7:02 pm

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
Colaborador
Colaborador

Alerta:
0 / 1000 / 100

Número de Mensagens: 2037
Idade: 14
Data de inscrição: 11/10/2009
Reputação: 64

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial]Criando e usando uma DLL

Mensagem por Luca$ em Qua Dez 15, 2010 7:34 pm

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

Luca$
Membro
Membro

Ranking: Nota D
Alerta:
0 / 1000 / 100

Número de Mensagens: 582
Data de inscrição: 10/10/2010
Notas recebidas: D-C
Reputação: 1

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial]Criando e usando uma DLL

Mensagem por LCS em Qua Dez 15, 2010 7:44 pm

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
Colaborador
Colaborador

Ranking: Nota A
Alerta:
0 / 1000 / 100

Número de Mensagens: 1045
Idade: 17
Data de inscrição: 09/03/2010
Notas recebidas: A
Reputação: 42

Prêmios
   : 2
   : 1
   : 1

Ver perfil do usuário http://www.www.ww.www

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial]Criando e usando uma DLL

Mensagem por Alexandre Dias em Qua Dez 15, 2010 7:53 pm

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
Membro
Membro

Alerta:
0 / 1000 / 100

Número de Mensagens: 406
Idade: 18
Data de inscrição: 13/10/2010
Reputação: 8

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial]Criando e usando uma DLL

Mensagem por Jiraya em Qua Dez 15, 2010 8:17 pm

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
Administrador
Administrador

Ranking: Nota A
Alerta:
0 / 1000 / 100

Número de Mensagens: 976
Data de inscrição: 20/03/2010
Versão:
  • Game Maker 8.1
  • Game Maker Studio: Master

Notas recebidas: A+A
Reputação: 83

Prêmios
   : 1
   : 0
   : 1

Ver perfil do usuário https://www.facebook.com/seito.washiro.7

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial]Criando e usando uma DLL

Mensagem por bill gates Zona sul em Qui Dez 16, 2010 2:45 am

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
Banido
Banido

Alerta:
0 / 1000 / 100

Número de Mensagens: 146
Data de inscrição: 02/02/2010
Reputação: -2

Prêmios
   : 0
   : 1
   : 0

Ver perfil do usuário http://www.tiagoguitarra.blogspot.com

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial]Criando e usando uma DLL

Mensagem por Salathiel em Qui Dez 16, 2010 10:01 am

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

Salathiel
Membro
Membro

Alerta:
0 / 1000 / 100

Número de Mensagens: 349
Idade: 16
Data de inscrição: 29/05/2010
Reputação: 3

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário http://salathiel1337.blogspot.com/

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial]Criando e usando uma DLL

Mensagem por Markituh em Qui Dez 16, 2010 10:11 am

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
Colaborador
Colaborador

Alerta:
0 / 1000 / 100

Número de Mensagens: 2037
Idade: 14
Data de inscrição: 11/10/2009
Reputação: 64

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial]Criando e usando uma DLL

Mensagem por Isaque Onix em Seg Jul 30, 2012 6:06 pm

aaah com o delphi7 é td diferente :'(

Bom tuto mano, pena q num deu aki

Isaque Onix
Membro
Membro

Alerta:
35 / 10035 / 100

Número de Mensagens: 537
Idade: 19
Data de inscrição: 15/08/2010
Versão:
  • Game Maker 8.0

Reputação: 19

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial]Criando e usando uma DLL

Mensagem por Kapoty em Seg Jul 30, 2012 6:41 pm

Uma pergunta :

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

Kapoty
Colaborador
Colaborador

Ranking: Nota C
Alerta:
0 / 1000 / 100

Número de Mensagens: 575
Data de inscrição: 05/11/2011
Versão:
  • Game Maker Studio: Professional

Notas recebidas: E + D + C + B + D
Reputação: 7

Prêmios
   : 0
   : 0
   : 1

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial]Criando e usando uma DLL

Mensagem por Jiraya em Seg Jul 30, 2012 7:14 pm

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
Administrador
Administrador

Ranking: Nota A
Alerta:
0 / 1000 / 100

Número de Mensagens: 976
Data de inscrição: 20/03/2010
Versão:
  • Game Maker 8.1
  • Game Maker Studio: Master

Notas recebidas: A+A
Reputação: 83

Prêmios
   : 1
   : 0
   : 1

Ver perfil do usuário https://www.facebook.com/seito.washiro.7

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial]Criando e usando uma DLL

Mensagem por Isaque Onix em Seg Jul 30, 2012 8:14 pm

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

Isaque Onix
Membro
Membro

Alerta:
35 / 10035 / 100

Número de Mensagens: 537
Idade: 19
Data de inscrição: 15/08/2010
Versão:
  • Game Maker 8.0

Reputação: 19

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum