| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1175 人关注过本帖, 1 人收藏
标题:C#怎么调用DLL
只看楼主 加入收藏
遗忘的爱
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2010-7-14
结帖率:50%
收藏(1)
 问题点数:0 回复次数:8 
C#怎么调用DLL
把VB的窗体程序编译成DLL,怎么在C#中调用这个DLL?
2013-05-14 11:35
yygy3748
Rank: 2
等 级:论坛游民
帖 子:3
专家分:20
注 册:2013-3-16
收藏
得分:0 
不懂,但要顶起,让高手看到
2013-05-25 11:24
qq645485165
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:76
专家分:197
注 册:2013-3-16
收藏
得分:0 
vb我没试过,不过你可以试试先在启动项目下建一个名为bin的文件夹,然后把dll文件拖到bin文件夹里,using 此命名空间.[dll文件名]
试试
2013-05-25 11:36
yimaoqian198
Rank: 4
等 级:业余侠客
帖 子:108
专家分:287
注 册:2010-5-10
收藏
得分:0 
右键项目名称,添加引用,浏览到你的dll文件
2013-05-25 15:54
csharpluntan
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:7
帖 子:197
专家分:1122
注 册:2013-4-24
收藏
得分:0 
没有问题点数 谁给你回答

投之以桃,报之以李
2013-05-26 19:15
遗忘的爱
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2010-7-14
收藏
得分:0 
3楼、4楼是正解,
2013-09-02 16:47
party620
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:696
专家分:2521
注 册:2013-1-31
收藏
得分:0 
右键,添加引用
2013-09-03 09:58
xpc
Rank: 1
等 级:新手上路
帖 子:73
专家分:4
注 册:2009-5-7
收藏
得分:0 
编译成标准的COM组件 以调用组件的方式调用就可以了
2013-09-08 14:10
303770957
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:838
专家分:2125
注 册:2005-9-10
收藏
得分:0 
楼上说的我觉得或多或少都有点不正确:
把VB的窗体程序编译成DLL.这个可能没有说清楚,vb是vb 6.0版本编辑器制作成的DLL吗?
(1)如果是就不能“右键项目名称,添加引用,浏览到你的dll文件 ”这样的方法是不行的,
因为C#不认这个DLL(原因自己想想就知道了),所以没办法添加的。
这个时候就只能这样了(举个例子)
比如有个DLL是corma.dll代码如下:
-----------------------------------------------
using System.Runtime.InteropServices;
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct tagMETERDATA {
    /// float
    public float m_fSumCold;
    /// float
    public float m_fCurHeat;
    /// float
    public float m_fHeatPower;
    /// float
    public float m_fFlowV;
    /// float
    public float m_fSumFlow;
    /// float
    public float m_fSupWaterT;
    /// float
    public float m_fBackWaterT;
    /// int
    public int m_nRunTime;
    /// char*
    [MarshalAsAttribute(UnmanagedType.LPStr)]
    public string m_strMeterTime;
}

public partial class NativeMethods {
    ///Return Type: int
    ///lpsMeterNum: LPTSTR->LPWSTR->WCHAR*
    ///lpsFactoryCode: LPTSTR->LPWSTR->WCHAR*
    ///nChannel: int
    ///lpsType: LPTSTR->LPWSTR->WCHAR*
    ///pMeterData: lpMeterData->tagMETERDATA*
    [DllImportAttribute(".//corma.dll", EntryPoint="ReadMeterData")]//一定要将DLL文件路径设置正确
    public static extern  int ReadMeterData(
        [MarshalAsAttribute(UnmanagedType.LPWStr)] System.Text.StringBuilder lpsMeterNum,
        [MarshalAsAttribute(UnmanagedType.LPWStr)] System.Text.StringBuilder lpsFactoryCode,
        int nChannel,
        [MarshalAsAttribute(UnmanagedType.LPWStr)] System.Text.StringBuilder lpsType,
        ref tagMETERDATA pMeterData
    ) ;
}
调用的时候直接调用ReadMeterData这个函数就可以了。需要注意的是函数的参数类型一定要给对,要不然调用的时候会出问题的。

(2)如果是制作的dll那就很好说了,因为和C#都是在.net框架下运行的,此时可以直接添加引用就行。

♂ 死后定当长眠,生前何须久睡。♀
2013-09-09 13:46
快速回复:C#怎么调用DLL
数据加载中...
 
   



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

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