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.
Code:
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.
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.
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.
Code:
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.