У меня возникают проблемы при взаимодействии с DLL, написанной на C. Я не уверен, какой тип параметра поставить вместо void *
Вот так выглядит API данной DLL:
POSNET_API POSNET_STATUS __stdcall POS_SetDeviceParam ( POSNET_HANDLE hDevice,
unsigned long paramCode,
void * paramValue
)
вот как я пытался импортировать его в C #:
[DllImport(EXT_DLL)]
private static extern int POS_SetDeviceParam(IntPtr hDevice, int POSNET_DEV_PARAM_IP, *type* paramValue);
вместо типа, который я помещал:
[MarshalAs(UnmanagedType.LPStr)] string and other L*Str
[MarshalAs(UnmanagedType.LPArray)] char[] and other type of arrays including of type byte
IntPtr which where AllocHGlobal, GCHandle.Alloc allocated before
even preceeding the method with unsafe and type = void*, combining above alloc aso.
raw type: string, char[]...
У меня кончилисьВозможности самостоятельно.
paramValue должен иметь значение IP в следующем формате: «192.168.1.1» - так это выглядит в демонстрационной версии C:
string ip="10.33.44.6";
POS_SetDeviceParam(hDevice,POSNET_DEV_PARAM_IP,(void*)ip.c_str());
В C #код, hDevice не инициализируется - POS_SetDeviceParam должен инициализировать его с дополнительными параметрами.Любые предложения приветствуются!