私は Classic C++ で PInvoke を使用するのが初めてで、昨日この質問をしました: Using Windows API functions in .NET
次のように、非常に単純な C++ プログラムを作成しました。
#include <iostream>
#include <stdio.h>
#include <string>
extern "C" __declspec(dllexport) int hello()
{
//printf ("Hello World!\n");
return 1;
}
次に、次のコマンドを使用して DLL をコンパイルしました: g++ -c mydll.cpp 次に、次のコマンドを使用して共有ライブラリを作成しました: g++ -shared -o mydll.dll mydll.o、次に mydll.dll を C:\Windows\syswow64 にコピーしました。 .
次に、新しい VB.NET プロジェクトを作成し、次のコードを作成しました。
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
hello() を呼び出した後、アプリケーションは終了します。例外はスローしません。
私はこれがどのように機能するかを理解しようとしています。私は C++ の商業的な経験がありません。大学での学歴のみ。
これは、mydll.dll の Dependancy Walker のイメージです。