Usando o aplicativo C ++ no .NET
Eu sou novo em usar o PInvoke com o Classic C ++ e fiz esta pergunta ontem:Usando as funções da API do Windows no .NET
Eu criei agora um programa C ++ muito simples como segue:
#include <iostream>
#include <stdio.h>
#include <string>
extern "C" __declspec(dllexport) int hello()
{
//printf ("Hello World!\n");
return 1;
}
Em seguida, compilei a DLL usando o seguinte comando: g ++ -c mydll.cpp Em seguida, criei a biblioteca compartilhada usando o seguinte comando: g ++ -shared -o mydll.dll mydll.o, em seguida, copiei mydll.dll para C: \ Windows \ syswow64 .
Eu então criei um novo projeto VB.NET e criei o seguinte código:
Imports System.Runtime.InteropServices
Public Class TestPlatformInvoke
<DllImport("mydll.dll", CallingConvention:=CallingConvention.Cdecl)> _
Public Shared Function hello() As Integer
End Function
Public Sub New()
Try
Dim test As Integer = hello() 'Line 6 ex As Exception
'I don't swallow exceptions
MsgBox("test")
Catch ex As Exception
End Try
End Sub
End Class
O aplicativo sai depois de chamar hello (). Não lança uma exceção.
Eu estou tentando entender como isso funciona. Eu não tenho nenhuma experiência comercial com c ++; apenas experiência acadêmica na universidade.
Aqui está uma imagem do Dependancy Walker para mydll.dll.