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);
}