Korzystanie z aplikacji C ++ w .NET
Jestem nowym użytkownikiem PInvoke z Classic C ++ i zadałem to pytanie wczoraj:Korzystanie z funkcji Windows API w .NET
Teraz stworzyłem bardzo prosty program C ++ w następujący sposób:
#include <iostream>
#include <stdio.h>
#include <string>
extern "C" __declspec(dllexport) int hello()
{
//printf ("Hello World!\n");
return 1;
}
Następnie skompilowałem bibliotekę DLL przy użyciu następującej komendy: g ++ -c mydll.cpp Następnie utworzyłem bibliotekę współdzieloną za pomocą następującej komendy: g ++ -shared -o mydll.dll mydll.o, a następnie skopiowałem mydll.dll do C: Windows .
Następnie stworzyłem nowy projekt VB.NET i utworzyłem następujący kod:
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
Aplikacja kończy działanie po wywołaniu hello (). Nie rzuca wyjątku.
Próbuję uporać się z tym, jak to działa. Nie mam żadnego doświadczenia komercyjnego z c ++; tylko doświadczenie akademickie na uniwersytecie.
Oto obraz Dependancy Walker dla mydll.dll.