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.

questionAnswers(2)

yourAnswerToTheQuestion