none
Como utilizar dll no c++ RRS feed

Respostas

  • Se sua dúvida for como utilizar sua DLL nativa, numa aplicação gerenciada (Windows Forms). Uma das alternativas será o P/Invoke. A outra é C++ Interop, que é bem mais transparente.

    Sobre P/Invoke:

    De uma olhada nesta thread: http://social.msdn.microsoft.com/Forums/pt-BR/vscmaismaispt/thread/511aef9f-d9a4-4682-804c-6b0b59cc61cf

    No exemplo que postei naquela thread tem:

    [DllImport("kernel32")]
    extern "C" Boolean GetVersionEx( [In, Out] OSVERSIONINFOEX% osvi );

    isto é como vc faz para importar uma dll:

    [DllImport("mylib.dll")]
    extern "C" void MyFunctionInsideDll( Int32 a, Int64 b, Real c, Double d  );

    Isto considerando se na DLL MyFunctionInsideDll for: void MyFunctionInsideDll( int a, long b, float c, double d  );

    Se vc tiver ponteiros ou strings terá que usar técnicas de marshalling (só procurar na documentação do .NET Framework como fazer isto).

    Use o P/Invoke.net: www.pinvoke.net para ver exemplos de como ocorre o mapeamento das APIs do Windows para C# usando P/Invoke.


    Fabio Galuppo
    • Sugerido como Resposta Victor Arias terça-feira, 1 de junho de 2010 12:59
    • Marcado como Resposta Douglas Canto terça-feira, 1 de junho de 2010 13:18
    sexta-feira, 28 de maio de 2010 13:07

Todas as Respostas

  • LoadLibrary, GetProcAddress e FreeLibrary são as APIs que vc precisará.

    Aqui tem um guideline: http://www.codeproject.com/KB/DLL/SimpleDllP3.aspx

     


    Fabio Galuppo
    quinta-feira, 27 de maio de 2010 15:45
  • Fabio,

     

    Estou fazendo uma aplicação em c++ utilizando o windows forms. Eu até baixei o código de xemplo do site que me passou e entendi como usar a dll, porém tem um pequeno problema. Como estou trabalhando com windows form ele não aceita os comando para chamar a dll, por exemplo ele não reconhece o loadlibrary. Voltei a estava zero novamente, já efetuei diversas pesquisas, mas não consegui obter solução.

     

     

    sexta-feira, 28 de maio de 2010 12:20
  • Se sua dúvida for como utilizar sua DLL nativa, numa aplicação gerenciada (Windows Forms). Uma das alternativas será o P/Invoke. A outra é C++ Interop, que é bem mais transparente.

    Sobre P/Invoke:

    De uma olhada nesta thread: http://social.msdn.microsoft.com/Forums/pt-BR/vscmaismaispt/thread/511aef9f-d9a4-4682-804c-6b0b59cc61cf

    No exemplo que postei naquela thread tem:

    [DllImport("kernel32")]
    extern "C" Boolean GetVersionEx( [In, Out] OSVERSIONINFOEX% osvi );

    isto é como vc faz para importar uma dll:

    [DllImport("mylib.dll")]
    extern "C" void MyFunctionInsideDll( Int32 a, Int64 b, Real c, Double d  );

    Isto considerando se na DLL MyFunctionInsideDll for: void MyFunctionInsideDll( int a, long b, float c, double d  );

    Se vc tiver ponteiros ou strings terá que usar técnicas de marshalling (só procurar na documentação do .NET Framework como fazer isto).

    Use o P/Invoke.net: www.pinvoke.net para ver exemplos de como ocorre o mapeamento das APIs do Windows para C# usando P/Invoke.


    Fabio Galuppo
    • Sugerido como Resposta Victor Arias terça-feira, 1 de junho de 2010 12:59
    • Marcado como Resposta Douglas Canto terça-feira, 1 de junho de 2010 13:18
    sexta-feira, 28 de maio de 2010 13:07