c语言怎么调用dll文件?

c语言怎么调用dll文件?,第1张

1、新建DLLTest文件夹,在该文件夹中新建source文件夹。

2、在source文件夹中造add.c。

3、win+R+cmd请出总指挥“命令行”,输入。

4、继续输入(路径也要随机应变)link /DLL /out:E:\VCfile\DLLTest\source\add.dll E:\VCfile\DLLTest\source\add.obj。

5、新建源文件call_dll.c或.cpp放到DLLTest文件夹,同时add.dll也复制过来。

6、编译,连接运行出现个5。调用成功。

注意事项:

C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。

1、加载dll-添加引用;添加引用的意思是让程序生成时根据配置的路径去加载相应的dll。

引用的步骤:

1)、点击引用。

2)、添加引用浏览。

3)、选择dll所在的路径确定。

其它方法

导入命名空间、实例化对象、调用函数只有导入该dll的命名空间,才能使用该空间下的类。因此,在引用了dll之后的第一步是导入命名空间;第二步才是实例化该类对象;最后才是使用类对象来调用其成员函数。

下面所示的代码是调用封装好的DMC3000.dll中的初始化函数。

using System

using System.Collections.Generic

using System.ComponentModel

using System.Data

using System.Drawing

using System.Linq

using System.Text

using System.Threading.Tasks

using System.Windows.Forms

using nsLTDMC

(1)引入命名空间

using nsDMC3000

namespace DalsaConfig

{

public partial class Form1 : Form

{

(2)声明类对象

DMC3000 m_f1DMC3000

public Form1()

{

(3)实例化类对象

m_f1DMC3000 = new DMC3000()

InitializeComponent()

(4)调用dll中的函数

bool bIniResult = m_f1DMC3000.Init()

if (true == bIniResult)

{

MessageBox.Show("Init OK")

}

else

{

MessageBox.Show("Init Failed!")

}

}

}

}

扩展资料:

函数名: system

功 能: 发出一个DOS命令

用 法: int system(char *command)

程序例:

#include <stdlib.h>

#include <stdio.h>

int main(void)

{

printf("About to spawn and run a DOS command\n")

system("dir")

return 0

}

又如:system("pause")可以实现冻结屏幕,便于观察程序的执行结果;system("CLS")可以实现清屏 *** 作。而调用color函数可以改变控制台的前景色和背景,具体参数在下面说明。

例如,用 system("color 0A")其中color后面的0是背景色代号,A是前景色代号。各颜色代码如下:

0=黑色 1=蓝色 2=绿色 3=湖蓝色 4=红色 5=紫色 6=黄色 7=白色 8=灰色 9=淡蓝色 A=淡绿色 B=淡浅绿色 C=淡红色 D=淡紫色 E=淡黄色 F=亮白色。

(注意:Microsoft Visual C++6.0 支持system)

颜色属性由两个十六进制数字指定 -- 第一个对应于背景,第二个对应于前景。每个数字可以为以下任何值:

0 = 黑色 8 = 灰色;1 = 蓝色 9 = 淡蓝色

2 = 绿色 A = 淡绿色;3 = 浅绿色 B = 淡浅绿色

4 = 红色 C = 淡红色;5 = 紫色 D = 淡紫色

6 = 黄色 E = 淡黄色;7 = 白色 F = 亮白色

参考资料:

百度百科——system(函数)

本文将为大家讲述DLL库自动注册的两种方法 包括调用Regsvr 方法等 希望通过本文能对大家有所帮助

尽管MS为我们提供了丰富的 NET Framework库 我们的程序C#开发带来了极大的便利 但是有时候 一些特定功能的控件库还是需要由第三方提供或是自己编写 当需要用到Dll引用的时候 我们通常会通过 添加引用 的方式将它们纳入到项目中 然后就可以像使用自己的类一样方便的使用它们了 但是 有些Dll库(OCX)文件是需要注册到Windows注册表后才能正常添加和使用的 本文介绍两种为Dll库(OCX)自动注册的方法 为大家提供参考

首先 大家都知道在Windows的 运行 中 输入 Regsvr exe 路径 这样的方法来手动注册Dll控件(OCX) 显示这种方法对于程序的自动化部署等带来极大的不便 因此 今天我们着重介绍如何用C#实现自动注册

方法一 调用Regsvr 法

既然可以在运行栏中输入 Regsvr exe 路径 的方法来注册 那么 一定可以在C#程序中采用同样的方法来调用Regsvr 以实现注册

Process p = new Process()

p StartInfo FileName = Regsvr exe

p StartInfo Arguments = /s C:\\DllTest dll

//路径中不能有空格  p Start()采用这种方法 注意要添加对命名空间System Diagnostics的引用

using System Diagnostics另外 这种方法有一个不足之处 那就是注册工作是在本程序之外由Regsvr exe程序来完成的 系统内不方便知道注册的结果 也不方便对注册过程d出的对话框进行自定义和控制 这里附Regsvr 的参数说明 (感谢网友伍华聪的提醒)

regsvr exe是 位系统下使用的DLL注册和反注册工具 使用它必须通过命令行的方式使用 格式是

regsvr [/u] [/s] [/n] [/i[:cmdline]] DLL文件名

命令可以在 开始→运行 的文本框中 也可以事先在bat批处理文档中编写好命令 未带任何参数是注册DLL文件功能 其它参数对应功能如下

/u 反注册DLL文件

/s 安静模式(Silent)执行命令 即在成功注册/反注册DLL文件前提下不显示结果提示框

/c 控制端口

/i 在使用/u反注册时调用DllInstall

/n 不调用DllRegisterServer 必须与/i连用

方法二 调用DllRegisterServer函数法

既然方法一不大实用 那么我们就来寻找一种真正实用的方法来达到我们的目的吧 研究Regsvr exe和Dll文件 我们会发现 其实每个需要注册的文件都包括一个DllRegisterServer()方法 Regsvr exe就是通过调用该方法来完成Dll的注册的 呵呵 知道了这个 我们就可以自己调用DllRegisterServer()来完成注册过程啦

首先 还得引入外部方法

[DllImport( DllTest dll )]  public static extern int DllRegisterServer()//注册时用  [DllImport( DllTest dll )]  public static extern int DllUnregisterServer()//取消注册时用 接下来就不难啦

int i = DllRegisterServer()  if (i >= )

{

//注册成功!

}

else

{

//注册失败} 取消注册的过程就不应再贴代码啦

两种方法介绍完啦 可是好像还缺点什么?对了 那就是对Dll是否已经注册过了的判断 一般情况下 我们可以将对Dll控件的注册过程放在系统启动的过程中来完成 但是 总不能每次启动都注册一次吧?这样做显然不合理 那么 我们就来判断一下 当前Dll是否已经注册过 如果已注册过 就跳过注册过程

每一个Dll的注册都会在注册表里记录下有关它本身的资料 如注册路径 唯一ID等 我们这里就是利用它留下的唯一ID号来判断

RegistryKey rkTest = Registry ClassesRoot OpenSubKey( CLSID\\{ F A DE BA A F FB BD CA B}\\ )

if (rkTest == null){

//Dll没有注册 在这里调用DllRegisterServer()吧} 注意要添加对命名空间Microsoft Win 的引用

using Microsoft Win

lishixinzhi/Article/program/net/201311/12168


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11521310.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存