примечание:
результат выполнения = 0 если нет ошибокName (PChar)
Вот мои наработки
Option Strict Off
Option Explicit On
Friend Class Form1
Inherits System.Windows.Forms.Form
Private Declare Function FreeLibrary Lib "kernel32.dll" (ByVal hLibModule As Integer) As Integer
Private Declare Function LoadLibrary Lib "kernel32.dll" Alias "LoadLibraryA"(ByVal lpLibFileName As String) As Integer
Private Declare Function GetProcAddress Lib "kernel32.dll" (ByVal hModule As Integer, ByVal lpProcName As String) As Integer
Private Declare Function CallWindowProc Lib "user32.dll" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As String) As Long
Private Declare Auto Function SkyOpen Lib "SkyDll.dll" () As Char
Private Const ERROR_SUCCESS As Short = &H0S
Private Sub Form1_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
On Error Resume Next
Dim SkyDll As Long, SkyOpen As Long
<llImport("SkyDll.dll", EntryPoint:="SkyOpen", SetLastError:=True, _
CharSet:=CharSet.Ansi, ExactSpelling:=True, _
CallingConvention:=CallingConvention.StdCall)> _
Public Shared Function Fun(ByVal SS2Name( ) As Char) As Integer
End Function
При вызове потребуется скрее всего использовать маршаплинг.
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=1000)> _
Dim SS2Name() As Char
Если у тебя всё известно на стадии проектирования, не лучше ли сразу внести функцию в таблицу импорта:
Private Declare Sub SkyOpen Lib "SkyDll.dll")
Разумеется, если там есть какие-то параметры, то их тоже надо объявить. Если не можешь сам, приведи оригинальный кусок вызова на С++.
Кстати, на си-пи-пи эту хрень мутили, почти наверняка по причине отсутствия h и lib файлов прилагающихся к библиотеке. На VB прога инициализирует адреса функций при первом вызове (как я понимаю), поэтому эти апишки надо использовать только в случае использования, к примеру плагинов - при динамическом подключении библиотек.