typedef struct _VID_PID_MANUFACTURER_PRODUCT
{
USHORT PID;
USHORT VID;
WCHAR Manufacturer[128];
WCHAR Product[128];
}Info,* pInfo;
请问,如何将这个结构体在C#中表示?
就是我在类里面声明了这个结构体,做成类库,然后作为一个函数的参数,在别的程序里面引用这个DLL
追答哦 那就可以直接用 不用头了 结构体前面+public :
public struct _VID_PID_MANUFACTURER_PRODUCT
{
//上面的
}
你可以试试看
_VID_PID_MANUFACTURER_PRODUCT product=new _VID_PID_MANUFACTURER_PRODUCT();
product.PID=0X000;
..................
等等........属性
不行啊!!
追答怎么不行,这个要看你怎么用的,如果你用错了,那肯定不行的。跟C++直接调用是有区别的。如果你是做参数,而且是输出的话,那可以在参数前面加ref 或out。
追问就是我在类里面声明了这个结构体,做成类库,然后作为一个函数的参数,在别的程序里面引用这个DLL。而且这个info怎么用intPtr来代替呢?
追答这样不用IntPtr,如果输入的话,你直接用info就可以了,如果是输出的话,那就要再加ref 或out,只有这样才能把参数内容输出
追问我的dll中是这个函数
public class FXSpectrometer : Component
{
struct info
{
……//省略
}
public int GetSpectrometerInfo(IntPtr hDevice, ref info inf )
}
在使用的程序中中
{
FXSpectrometer.info inf = new FXSpectrometer.info();
int z = fxSpectrometer1.GetSpectrometerInfo(hDevice, ref inf);
}
GetSpectrometerInfo(Info hDevice, ref info inf )
直接这样不就行了吗,干嘛一定要用IntPtr,这里都不用它
还要上面的那个函数是在C#里面啊,不是在C++里面啊,如果是引用C++ DLL的函数好像要用DllImport来引入啊,就好像C#使用API一样
你最好把错误提示发上来,不然不知道你错在哪里