| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 604 人关注过本帖, 1 人收藏
标题:关于C#调用dll的问题
取消只看楼主 加入收藏
gamezjs
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-5-10
收藏(1)
 问题点数:0 回复次数:2 
关于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,我不知道是不是我写的哪里有问题?请各位大大帮忙看下
2012-10-29 15:56
gamezjs
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-5-10
收藏
得分:0 
没办法解决吗?还是我写的不对,大家看不懂,急啊!在线等。
2012-10-30 08:16
gamezjs
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-5-10
收藏
得分:0 
想要调用C程序做的dll文件(应该是非托管的),是不是只要把dll文件放到system32下就可以了,在调用的时候直接用DllImport(".//corma.dll")]就可以了。
2012-10-30 09:56
快速回复:关于C#调用dll的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020945 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved