![](/img/trans.png)
[英]System.EntryPointNotFoundException in Parallel red in output
[英]System.EntryPointNotFoundException: Unable to find an entry point
我在執行它時將VB6轉換為c#會產生此錯誤
從VB6
Declare Function OpenCommPort Lib "C:\Program Files\MR705API.dll" Alias "?OpenCommPort@@YGHPADPAPAX@Z" (ByVal PortName As String, ByRef hCom As Long) As Long
Declare Function CloseCommPort Lib "C:\Program Files\MR705API.dll" Alias "?CloseCommPort@@YGHPAX@Z" (ByVal hCom As Long) As Long
Declare Function SetLED Lib "C:\Program Files\MR705API.dll" Alias "?SetLED@@YGHPAXEE@Z" (ByVal hCom As Long, ByVal Led As Byte, ByVal Addr As Byte) As Long
Declare Function ActiveBuzzer Lib "C:\Program Files\MR705API.dll" Alias "?ActiveBuzzer@@YGHPAXEE@Z" (ByVal hCom As Long, ByVal DelayTime As Byte, ByVal Addr As Byte) As Long
Declare Function Iso14443Reqa Lib "C:\Program Files\MR705API.dll" Alias "?Iso14443Reqa@@YGHPAXEPAEE@Z" (ByVal hCom As Long, ByVal ReqAMode As Byte, ByVal ATQ As String, ByVal Addr As Byte) As Long
Declare Function Iso14443Anticoll Lib "C:\Program Files\MR705API.dll" Alias "?Iso14443Anticoll@@YGHPAXEPAE1E@Z" (ByVal hCom As Long, ByVal AnticollMode As Byte, ByVal Uid As String, ByVal MultiTag As String, ByVal Addr As Byte) As Long
在C#中
[DllImport ("MR705API.dll")]
public static extern long OpenCommPort(String portName, ref long hCom );
[DllImport ("MR705API.dll")]
public static extern long CloseCommPort(long hCom);
[DllImport ("MR705API.dll")]
public static extern long SetLED(long hCom, byte Led , byte Addr);
[DllImport ("MR705API.dll")]
public static extern long ActiveBuzzer (long hcom, byte DelayTime, byte Addr);
[DllImport ("MR705API.dll")]
public static extern long Iso14443Reqa (long hcom, byte ReqAMode, string ATQ, byte Addr);
以及我如何使用它。
public void doReader() {
Result = OpenCommPort("COM9", ref HANDLE);
....
....
}
例外
System.EntryPointNotFoundException: Unable to find an entry point named 'OpenCommPort' in DLL 'MR705API.dll'.
at TrueReader.MainForm.OpenCommPort(String portName, Int64& hCom)
at TrueReader.MainForm.doReader() in c:\Users\sattha\Documents\SharpDevelop Projects\TrueReader\TrueReader\MainForm.cs:line 59
at TrueReader.MainForm.Timer1Tick(Object sender, EventArgs e) in c:\Users\sattha\Documents\SharpDevelop Projects\TrueReader\TrueReader\MainForm.cs:line 54
at System.Windows.Forms.Timer.OnTick(EventArgs e)
at System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at TrueReader.Program.Main(String[] args) in c:\Users\sattha\Documents\SharpDevelop Projects\TrueReader\TrueReader\Program.cs:line 27
誰能指導我,我做錯了什么? 還是我想念什么。
我不知道此.dll是如何編寫的以及使用哪種語言。
但它曾經在VB6中使用過。
您應該為每個DLL導入功能定義入口點
只需將Alias
入口點從您的VB6代碼復制到C#
例如... VB6中的“ OpenCommPort”
別名“?OpenCommPort @@ YGHPADPAPAX @ Z”
TO-> C#中的“ OpenCommPort”
[DllImport ("MR705API.dll",
EntryPoint="?OpenCommPort@@YGHPADPAPAX@Z")]
public static extern int OpenCommPort(string portName, ref int hCom);
ADDINTIONAL
VB6中的 long
等效於C#中的 int
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.