关于C#调用dll的问题
别人给我的一个DLL文件,是用C做的,我想调用这个dll,我把这个文件放在system32下,是不是可以直接在程序中调用啊,函数声明如下:// 参数说明:
// lpsMeterNum 传入表号
// lpsFactoryCode 传入厂家编号
// nChannel 通道号
// lpsType 集中器类型
// pMeterData 表数据
// 返回值: 操作成功返0,失败返回相应错误码
DLLEXPORT int ReadMeterData(LPTSTR lpsMeterNum, LPTSTR lpsFactoryCode, int nChannel, LPTSTR lpsType, lpMeterData pMeterData);
/**
* 抄表获取数据的结构
**/
typedef struct tagMETERDATA
{
float m_fSumCold, //累计冷量
m_fCurHeat, //当前热量
m_fHeatPower, //热功率
m_fFlowV, //流速
m_fSumFlow, //累计流量
m_fSupWaterT, //供水温度
m_fBackWaterT; //回水温度
int m_nRunTime; //运行时间
CString m_strMeterTime; //表时间
}MeterData, *lpMeterData;
以下为我自己编写的C#代码:
程序代码:
[DllImport(".//corma.dll", EntryPoint = "ReadMeterData")] public static extern int ReadMeterData(string MeterNum, string FactoryCode, int Channel, string Type,lpmeterdata a); private SerialPort comm = new SerialPort(); public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { string MeterNum = "12345678"; string FactoryCode = "1"; int Channel = 1; string Type = "S型"; float SumCold, CurHeat, HeatPower, FlowV, SumFlow, SupWaterT, BackWaterT; int RunTime; string MeterTime; lpmeterdata b=new lpmeterdata(); int result=ReadMeterData(MeterNum,FactoryCode,Channel,Type,b); if (result == 0) { MessageBox.Show("抄表成功"); } else { MessageBox.Show("抄表失败"); }可是我断点查看的时候,result的值为1,我不知道是不是我写的哪里有问题?请各位大大帮忙看下