У меня есть dll
и пример кода с использованием VB.net.
Однако мне нужно использовать функции в E5KDAQ.vb
, используя файл E5KDAQ.dll
на C #. Могу ли я узнать, как этого добиться?
Кто-нибудь может привести хорошие примеры того, как его использовать?
E5KDAQ.vb
Imports System.Runtime.InteropServices
Imports System.Threading
Imports System.text
Imports System.IO
Imports System.Environment
Module E5KDAQ
'Public Cm As New MODULE_IOCHANNELS
'TCP/IP Port Declaration
Const TCP_MODBUS_PORT = 502 'MODBUS/TCP
Public Const UDP_ASC_PORT = 1025 'UDP ASCII Command
Public Const UDP_ALARM_PORT = 5168 'UDP alarm port
Public Const UDP_STREAM_PORT = 5148 'UDP stream port
Public Const BROADCAST_IP = "255.255.255.255"
'########## E5KDAQ.DLL Export Functions ###############################################//
<DllImport("E5KDAQ.dll")> _
Public Function E5K_GetRunTimeOS() As Integer
End Function
'----Open/Close module functions -----
<DllImport("E5KDAQ.dll")> _
Public Function E5K_OpenModuleUSB(ByVal devid As Integer) As Short
End Function
<DllImport("E5KDAQ.dll")> _
Public Function E5K_GetLocalIP(ByRef ip0 As Byte,<[In](),Out()>Byref ip1 As Byte,<[In](),Out()> ByRef ip2 As Byte,<[In](),Out()>ByRef ip3 As Byte) As Short
End Function
<DllImport("E5KDAQ.dll")> _
Public Function E5K_DebugPrint(ByVal str As String)
End Function
End Module
Я пытался ссылаться на файл dll непосредственно в моем проекте C #, но не смог со следующей ошибкой:
![enter image description here](https://i.stack.imgur.com/TuLXz.png)
Я также пытался скомпилировать проект VB как библиотеку классов
со следующим:
Class1.vb
Imports System.Runtime.InteropServices
Imports System.Threading
Imports System.Text
Imports System.IO
Imports System.Environment
Public Class Class1
'Public Cm As New MODULE_IOCHANNELS
'TCP/IP Port Declaration
Const TCP_MODBUS_PORT = 502 'MODBUS/TCP
Public Const UDP_ASC_PORT = 1025 'UDP ASCII Command
Public Const UDP_ALARM_PORT = 5168 'UDP alarm port
Public Const UDP_STREAM_PORT = 5148 'UDP stream port
Public Const BROADCAST_IP = "255.255.255.255"
'Type of Event
Public Const ALARM_EVENT_TYPE = 0
Public Const STREAM_EVENT_TYPE = 1
Public Const HIGH_ALARM_EVENT = 0
Public Const LOW_ALARM_EVENT = 1
Public Const AD_ALARM_EVENT = 1
Public Const DI_ALARM_EVENT = 0
<DllImport("Kernel32.Dll")>
Public Function CloseHandle(ByRef hObject As Integer) As Long
End Function
<DllImport("Kernel32.Dll")>
Public Function CreateMutex(ByVal Attr As Integer, ByVal bInitial As Integer, ByVal lpName As Integer) As Integer
End Function
<DllImport("Kernel32.Dll")>
Public Function ReleaseMutex(ByVal hdnl As Integer) As Boolean
End Function
Public Function GetVarPtr(ByVal e As Object) As Integer
Dim GC As GCHandle = GCHandle.Alloc(e, GCHandleType.Pinned)
Dim GC2 As Integer = GC.AddrOfPinnedObject.ToInt32
GC.Free()
Return GC2
End Function
'########## E5KDAQ.DLL Export Functions ###############################################//
<DllImport("E5KDAQ.dll")>
Public Function E5K_GetRunTimeOS() As Integer
End Function
'----Open/Close module functions -----
<DllImport("E5KDAQ.dll")>
Public Function E5K_OpenModuleUSB(ByVal devid As Integer) As Short
End Function
<DllImport("E5KDAQ.dll")>
Public Function E5K_OpenModuleIP(ByVal IP As String, ByVal ConnectTimeout As Integer, ByVal TxTimeout As Integer, ByVal rxTimeout As Integer) As Short
End Function
End Class
Я получил следующую ошибку:
![enter image description here](https://i.stack.imgur.com/tooPa.png)
Итак, как мне импортировать E5KDAQ.dll, чтобы я мог успешно скомпилировать его как библиотеку классов для использования на C #?
Если кто-то захочет помочь, я могу выслать вам пример файла проекта vb, так как он доступен для общественности.
Любая помощь будет принята с благодарностью.