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.

questionAnswers(2)

yourAnswerToTheQuestion