Usando la aplicación C ++ en .NET
Soy nuevo en usar PInvoke con Classic C ++ y ayer hice esta pregunta:Usando las funciones de la API de Windows en .NET
Ahora he creado un programa de C ++ muy simple de la siguiente manera:
#include <iostream>
#include <stdio.h>
#include <string>
extern "C" __declspec(dllexport) int hello()
{
//printf ("Hello World!\n");
return 1;
}
Luego compilé la DLL usando el siguiente comando: g ++ -c mydll.cpp Luego creé la biblioteca compartida usando el siguiente comando: g ++ -shared -o mydll.dll mydll.o, luego copié mydll.dll a C: \ Windows \ syswow64 .
Luego creé un nuevo proyecto VB.NET y creé el siguiente 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
La aplicación sale después de llamar a hello (). No lanza una excepción.
Estoy tratando de entender cómo funciona esto. No tengo ninguna experiencia comercial con c ++; Solo experiencia académica en la universidad.
Aquí hay una imagen de Dependancy Walker para mydll.dll.