Как использовать C ++ API в VB.NET или C #

0

Мне нужно внедрить 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();
}
  • 0
    у вас есть доступ к файлу заголовка в C ++, где эта точка входа живет?
  • 0
    Каким бы ни было настоящее имя функции, ваш ExactSpelling = True не поможет ее найти. Используйте dumpbin.exe / exports в DLL, чтобы увидеть экспортированные имена. И имейте в виду, что вы, как правило, не можете вызывать функции C ++, такие как функции экземпляра класса C ++. Это требует оболочки C ++ / CLI.
Показать ещё 1 комментарий
Теги:

2 ответа

0

Спасибо @Ханс Пассант. Я сделал исследование и использовал "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();

}

и он отлично работает, спасибо за предложение.

0
[System.Runtime.InteropServices.DllImport("ABCAPI.dll", SetLastError = true)]  
[return: System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.Bool)]  
public static extern bool ABCFunc();
  • 0
    Да, у меня есть все файлы для него и файлы заголовков / SDK и т. Д., Но я не знаю, как это реализовать :(
  • 0
    Я пытался, как вы говорите, но все еще получаю ту же ошибку.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню