标题:高手请进:求教关于C#调用C++写的DLL问题
只看楼主
b870516
Rank: 2
等 级:论坛游民
帖 子:38
专家分:44
注 册:2007-7-13
结帖率:0
已结贴  问题点数:5 回复次数:5 
高手请进:求教关于C#调用C++写的DLL问题
这个问题,我问了4个群,看了网页前几页的所有教程,都没有实现,请高手帮忙
有一个DLL,说明如下:我该如何在C#中调用?
5、int WINAPI GetSerial(HANDLE hDevice,UCHAR * serial);
//读取序列号
//返回值:0---表示写入命令失败
//        1---表示读取序列号失败
//        2---表示读取序列号成功
/*
unsigned char serial[16];
int result=GetSerial(hDevice,serial);
switch(result)
{
case 0:...
case 1:...
case 2:...
}

*/

我的方法:

//DLLWrapper.cs代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace 光谱仪控制
{
    class DLLWrapper
    {
        [DllImport("CCD1.DLL")]
        public static extern int GetSerial(IntPtr hDevice, string serial);
    }
}

using System;
using System.Collections.Generic;
using
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Reflection;
using System.Threading;

namespace 光谱仪控制
{
    string serial=null;
    public unsafe partial class Form1 : Form
    {
         public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
        private void button2_Click(object sender, EventArgs e)
        {
            
            int res = 4;
            res = DLLWrapper.GetSerial(hDevice,serial);
            switch (res)
            {
                case 0:
                    MessageBox.Show("获取命令失败");
                    break;
                case 1:
                    MessageBox.Show("读取失败");
                    break;
                case 2:
                    MessageBox.Show("读取成功");
                    break;

            }

        }
    }
}


搜索更多相关主题的帖子: result 序列号 如何 网页 
2011-12-07 22:23
b870516
Rank: 2
等 级:论坛游民
帖 子:38
专家分:44
注 册:2007-7-13
得分:0 
2011-12-08 08:21
wangnannan
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:87
帖 子:2545
专家分:9359
注 册:2007-11-3
得分:2 
能否上传一下DLL呢

出来混,谁不都要拼命的嘛。 。拼不赢?那就看谁倒霉了。 。有机会也要看谁下手快,快的就能赢,慢。 。狗屎你都抢不到。 。还说什么拼命?
2011-12-08 08:55
jedypjd
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:9
帖 子:1096
专家分:4969
注 册:2009-7-27
得分:2 
这不是已经调用了吗,还有啥问题

天涯无岁月,歧路有风尘,百年浑似醉,是非一片云
2011-12-08 12:13
zhoufeng1988
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:北京
等 级:贵宾
威 望:27
帖 子:1432
专家分:6329
注 册:2009-5-31
得分:2 
要导出的DLL是用C++编写的?加extern "C"吗?
你可以用VC6的Depends工具看看那个DLL导出的函数名字是否正确。
C++导出的DLL如果不用EXTERN_C的话,不能够被C#调用。
2011-12-08 13:48
zhoufeng1988
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:北京
等 级:贵宾
威 望:27
帖 子:1432
专家分:6329
注 册:2009-5-31
得分:0 
CppDll_CSharp.rar (306.51 KB)
2011-12-08 14:14



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-357260-1-1.html




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

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