[Off] Mata dъvidas(Plug-ins)
#1

Boas, tenho recebido mensagens aqui e ali a respeito de plug-ins, normalmente acabam por ser dъvidas semelhantes, ou besteiras simples...

Nгo vi atй agora uma dъvida que se relacionasse a sintaxe da linguagem C++, mas na maioria dos casos sгo:

Problemas com o modulo de definiзгo,
problemas com linkagem,
problemas com exportaзгo,

coisas do tipo...

Para isso eu estou criando um tуpico mais completo pra dar introduзгo a plug-ins e explicar pra vocкs mais ou menos como ficaria o funcionamento(teуrico e prбtico) do mesmo, eu ia fazer um vнdeo sу que o Camtasia expirou, entгo atй eu baixar um novo aqui por enquanto, vou deixar esse OFF para resposta dos problemas citados acima.

Para quem leu e nгo conseguiu entender direito o tуpico "Guia de desenvolvimento de plug-ins" feito pelo Kyosaur

modulos de definiзгo sгo utilizados para fazer toda a exportaзгo dos cуdigos que queremos linkar ao nosso projeto, como citado no tуpico tambйm, outro detalhe importante й que os modulos.def sгo exclusividade do Visual Studio.
Nesse tipo de arquivo vocк pode fazer um escopo gigante de cуdigo para determinada finalidade, como trabalhar com stack, heap, sections, etc...
Como a nossa finalidade й apenas exportar algumas funзхes do AMX, utilizamos apenas a funзгo 'EXPORTS'
para fazer a linkagem AMX -> Plugin.

Quando vocк cria o .def, em quase 100% dos casos o VS jб automaticamente o define como modulo de definiзгo padrгo da dll, em alguns casos algumas pessoas estгo tendo problemas nessa parte, ou nгo exportam a funзгo correta ou acabam que mexendo e alterando sem querer o modulo de definiзгo da dll.
o modulo й simples, vocк cria o arquivo.def, e inseri as exportaзхes necessбrias para utilizar no seu plug-in, nгo precisa mexer em mais nada.

Outro problema que gerou a maioria das dъvidas que eu vi, foi a respeito da linkagem, como vocк liga o SDK ao plug-in, algumas pessoas metem o sdk na pasta do plug-in por isto fica, e quando vгo ver lhe volta erros do tipo.

Код:
unresolved external symbol _amx_Register referenced in function _AmxLoad@4
unresolved external symbol "void * pAMXFunctions" (?pAMXFunctions@@3PAXA)
Isso й outra coisa que pode ser simplesmente resolvida deixando que o Visual Studio faзa o trabalho pesado, os passos sгo simples.

Quando vocк tem seu projeto de DLL criado, vocк inseri a pasta da SDK dentro da pasta do plug-in, vai ao VS(Visual Studio) e cria o mesmo como item existente.
Imagem:
Projeto -> Add -> New filter
vocк cria a pasta com nome 'SDK' e depois

Projeto -> Add -> Existing Item
E ai vocк adiciona os itens do SDK na pasta SDK criada dentro do projeto do Visual Studio.

Com isto o erros citados acima sгo solvidos.

Como foi citado, na maioria das vezes as pessoas estгo tendo problemas por nгo saber lidar muito com o Visual Studio, entгo nada que nгo seja simples de se resolver...
Eu estarei lanзando um tutorial mais completo com um vнdeo se possнvel, este tуpico quero deixar para dъvidas do gкnero.
Reply
#2

Visual Studio й chato para programar, mas й uma opзгo viбvel para fazer plugins em SA:MP. Eu eu soubesse, faria em outro IDE.
Reply
#3

Quote:
Originally Posted by ipsBruno
Посмотреть сообщение
Visual Studio й chato para programar, mas й uma opзгo viбvel para fazer plugins em SA:MP. Eu eu soubesse, faria em outro IDE.
No fundo, ele й bom, ele salva em questхes de recursos, como por exemplo esse caso de linkagem e exportaзхes etc...
E eu gosto de algumas opзхes a mais que ele tem a respeito da compilaзгo, etc.

Vocк tinha citado cуdigos pequenos e como й chato ter de esperar algumas coisas carregarem no VS, por que nгo usa sublime ?
Reply
#4

Eu uso Sublime ou Dev C++. Mas estes nгo dispхe de todos os recursos como o VS
Reply
#5

Quote:
Originally Posted by ipsBruno
Посмотреть сообщение
Eu uso Sublime ou Dev C++. Mas estes nгo dispхe de todos os recursos como o VS
Eu acho sublime fantбstico tambйm, a simplicidade dele e etc, muito bem feito.
Reply
#6

Quote:
Originally Posted by Willian_Luigi
Посмотреть сообщение
Eu acho sublime fantбstico tambйm, a simplicidade dele e etc, muito bem feito.
E bonito.
Reply
#7

Se alguйm estiver interessado em outro IDE, use o Qtcreator. Alйm de ser mais fбcil em termos de link entre librбrias e afins, tambйm й multi-plataforma.
Reply
#8

Vou experimentar este daн
Reply
#9

obrigado Willian_Luigi eu tou com o bixinho de querer aprender c++ e fazer plugins e tals ja que isso melhora e muito o desempenho do servidor isto ira ajudar muito, obrigado..
Reply
#10

Quote:
Originally Posted by ipsBruno
Посмотреть сообщение
Visual Studio й chato para programar, mas й uma opзгo viбvel para fazer plugins em SA:MP. Eu eu soubesse, faria em outro IDE.
Visual studio dб bastante suporte para grandes projetos, agora claro que se for fazer tipo um Hello World pode usar DevC++ ou outro IDE.

Quote:
Originally Posted by Willian_Luigi
Посмотреть сообщение
No fundo, ele й bom, ele salva em questхes de recursos, como por exemplo esse caso de linkagem e exportaзхes etc...
E eu gosto de algumas opзхes a mais que ele tem a respeito da compilaзгo, etc.
Eu tambйm gosto por isso, o outro lado й a compatibilidade, й que o Visual Studio ignora muitos warings e alguns erros entгo se vocк for tentar converter com gcc vai dar esses erros e vai ser um grande trabalho.

Quote:
Originally Posted by ipsBruno
Посмотреть сообщение
Eu uso Sublime ou Dev C++. Mas estes nгo dispхe de todos os recursos como o VS
Ah sim й claro, eu jб usei Dev C++ mas um dia fui instalar o boost LIB no Dev e pesquisei e ouve gente a dizer que o projeto do Dev C++ foi abandonado jб algum tempo e que para instalar o boost vai ser um grande problema, entгo eu decidi procurar outros IDE's e acabei por achar o Code::Blocks e й bastante bom

Lembrando que um dos problemas desses IDEs e compiladores й arranjar compatibilidade nos sources e na instalaзгo, o meu ъltimo problema foi com mysql eu fui instalar o mysql para c++ e passei 3 dias a tentar conectar com o compilador MinGW, eu via diversos tutoriais sу que muitos deles eram feitos com o VC++.

Sobre Plugins quero relembrar que tambйm й possнvel fazer plugins em C visto que o SDK й feito em C.

---

@Edit
Lembrei-me de uma coisa , com os plugins й possнvel fazer um gamemode em C++, ou seja vocк usa o invoke e invoca as funзхes nativas do sa-mp depois cria um ficheiro .pwn e coloca lб sу as nativas do plugin, ex:

pawn Код:
public OnGameModeInIt()
{
cpp_GameModeInIt();
return 1;
}
Mas lembro tambйm que й necessбrio jб ter um conhecimento de C++ pois as coisas nгo funcionam como й em PAWN, ou seja, vocк pode correr o risco de ter leaks de memуria e outras coisas.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)