Unmanaged c++ dll разной разрядности в проекте С# под платформу "Any CPU", Получить температуру с термодатчика - C#

Узнай цену своей работы

Формулировка задачи:

Нужно получить температуру с термодатчика Nvidia. Для получения температуры видеокарты использовал NvAPI, собрал свои 2 dll (x86, x64) но интересует немного другое. Как скомпилировать из: nvapi.lib, nvapi64.lib -> MyNvTemp.dll (под платформу "Any CPU"). Или как-то подружить шарп с .lib библиотеками? Может как-то использовать nvapi.dll напрямую через DllImport? Да и как заменить DllImport, что-бы библиотеку можно было загрузить по ходу выполнения программы, а не сразу.

Решение задачи: «Unmanaged c++ dll разной разрядности в проекте С# под платформу "Any CPU", Получить температуру с термодатчика»

textual
Листинг программы
    public static class HID_Lib
    {
        private static bool is_x86()
        {
            if (IntPtr.Size == 4)
                return true;
            else
                return false;
        }
 
        public static bool HID_DeviceTest(Int16 ProductID, Int16 VendorID, Int16 VersionNumber, Int16 Index)
        {
            if (is_x86())
                return HID_Lib_x86.HID_DeviceTest(ProductID, VendorID, VersionNumber, Index);
            else
                return HID_Lib_x64.HID_DeviceTest(ProductID, VendorID, VersionNumber, Index);
        }
    }
 
    private static class HID_Lib_x86
    {
        [DllImport("HID_Lib_Plus.dll")]
        public static extern bool HID_DeviceTest(Int16 ProductID, Int16 VendorID, Int16 VersionNumber, Int16 Index);
    }
 
    private static class HID_Lib_x64
    {
        [DllImport("HID_Lib_Plus_x64.dll")]
        public static extern bool HID_DeviceTest(Int16 ProductID, Int16 VendorID, Int16 VersionNumber, Int16 Index);
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5
Похожие ответы