100分求教个c#调用其他程序写的dll的问题。。。。。。。~~

yuanyu521370 2008-07-12 07:31:17
有个 dll文件,我想调用其中的函数,比如有个dll的文件名为diaoyong.dll
用delphi语言调用这个dll中的函数的写法为cici('user32.dll',@a(),@b());其中cici是被调用的dll中的函数,
a(),b()都是主程序中自己定义的函数,@a(),@b()应该是表示这个函数的地址吧~(我自己这样理解)
那在c#中应该怎样表示自己定义的函数的地址呢?

...全文
94 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿牛138588 2008-07-12
  • 打赏
  • 举报
回复
using System.Runtime.InteropServices
[DllImport("kernel32.DLL", EntryPoint = "SetFileAttributes")] //如果dll文件不在系统目录,需要绝对定位
private static extern bool SetFileOrDirAttrib(string DFname, int attrib); //名字可以随便起,入口要保持一至(参数等)
yagebu1983 2008-07-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 guying999 的回复:]
添加dll的引用,然后引用命名空间,就可以直接使用了
[/Quote]
饭瘾 2008-07-12
  • 打赏
  • 举报
回复
学习
xinyun80 2008-07-12
  • 打赏
  • 举报
回复
添加引用就可以直接调用了
guying999 2008-07-12
  • 打赏
  • 举报
回复
添加dll的引用,然后引用命名空间,就可以直接使用了
Adechen 2008-07-12
  • 打赏
  • 举报
回复
在项目中添加该dll的引用
gomoku 2008-07-12
  • 打赏
  • 举报
回复
可以用Delegate来传入回调函数。
在调用时,实际上.Net内部传入了另外一个函数指针(stub),由stub来调用Delegates,所以可以传入静态函数或类成员函数。


using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
cici(A, B);
}

static void A()
{
MessageBox.Show("static A()");
}

void B()
{
MessageBox.Show("instance B()");
}

[DllImport("diaoyong.dll")]
static extern void cici(MethodInvoker a, MethodInvoker b);
}
}
tuzhengqou 2008-07-12
  • 打赏
  • 举报
回复
帮你顶
fsy123456accp 2008-07-12
  • 打赏
  • 举报
回复
我也帮你顶 呵呵
格拉 2008-07-12
  • 打赏
  • 举报
回复
帮你顶!

110,620

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧