Мне нужно внедрить API, написанный на C++ в.NET, который используется устройством Fingerprint в приложении.NET.
Я пробовал использовать оба языка VB.NET и С#, но все же я не могу понять, что это дает мне;
Unable to find the entry point in the DLL.
Это означает, что он обращается к DLL, но в чем проблема, пожалуйста, скажите мне?
Вот пример кода:
internal static class UnsafeNativeMethods
{
const string _dllLocation = "ABCAPI.dll";
[DllImport(_dllLocation, EntryPoint = "ABCFunc", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl )]
public static extern bool ABCFunc();
}
Спасибо @Ханс Пассант. Я сделал исследование и использовал "dumpbin/Exports mydllname.dll" и нашел полное объявление функций и, наконец, работает для меня.
internal static class UnsafeNativeMethods {
const string _dllLocation = "ABCAPI.dll";
[DllImport(_dllLocation, EntryPoint = "_ABCFunc@4", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.ThisCall )]
public static extern bool ABCFunc();
}
и он отлично работает, спасибо за предложение.
[System.Runtime.InteropServices.DllImport("ABCAPI.dll", SetLastError = true)]
[return: System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.Bool)]
public static extern bool ABCFunc();