我是使用经典 C++ 的 PInvoke 的新手,昨天我问了这个问题:在 .NET 中使用 Windows API 函数
我现在创建了一个非常简单的 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 的图像。