none
Duvida sobre chamada de dll RRS feed

  • Pergunta

  • Boa tarde a todos,

    Estou aprendendo a trabalhar com c3

    e fiz uma dll como a que segue abaixo

    #include "stdafx.h"
    
    using namespace std;
    
    namespace DllTimeout
    {
    	extern "C" __declspec(dllexport)  void Tempo(int milissegundos) {
    		Sleep(milissegundos); // takes microseconds
    		return;
    	}
    
    }
    

    depois fiz um window form aplication para chamar esta dll

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
    
    
    namespace Teste1
    {
        public partial class Form1 : Form
    
        {
            [DllImport("DllTimeout.dll")]
            public static extern void Tempo(int c);
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                Tempo(1000);
            }
    
            private void label1_Click(object sender, EventArgs e)
            {
    
            }
        }
    }
    

    Esta dando um erro quando eu click no botão...

    Managed Debugging Assistant 'PInvokeStackImbalance' has detected a problem in 'C:\c\Teste1\Teste1\bin\Debug\Teste1.vshost.exe'.

    Additional information: Uma chamada para a função PInvoke 'Teste1!Teste1.Form1::Tempo' desbalanceou a pilha. Isso ocorreu provavelmente porque a assinatura gerenciada de PInvoke não corresponde à assinatura de destino não gerenciada. Verifique se a convenção e o parâmetro de chamada da assinatura de PInvoke são iguais aos da assinatura não gerenciada de destino.


    jonas

    quarta-feira, 11 de maio de 2016 17:05

Todas as Respostas

  • Olá Jonassjgs,

    Você tem que incluir onde que chama.

    Segue um tutorial :https://www.youtube.com/watch?v=yEqRyQhhto8

    Aqui tem a documentação da Microsfot:https://msdn.microsoft.com/pt-br/library/ms235636.aspx

    At. te. Manoel Neto

    quinta-feira, 12 de maio de 2016 04:56