c语言怎么调用dll文件

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

(1)编写程序时,你要包含(#include "什么.h") dll文件作者世备提供 的 头文件(.h文件) 。

程序里,便和普通函数调用一样,去调用猛饥它的函数。

(2)程序编译时,你要链接 dll文件作者提供 的 (.lib文件) 库文件。

当然,你可以在源程序里把.lib 名字 写上,编译时自动去链接,例子:

#pragma comment (lib, "什么.lib")

(3)执行搜知毁时,要有 .dll 文件. 放在当前文件夹或系统文件夹里。

c++ 调用.lib的方法:

一: 隐式的加载时链接,有三种方法

1  LIB文件直接加入到工程文件列表中

在VC中打开File View一页,选中工程名,单击鼠标右键,然后选中"Add Files to Project"菜单慧升,在d出的文件对话框中选中要加入DLL的LIB文件。然后在首先要使用该函数的地方加上该LIB的头文件,如#include "..\lib.h"即可(没有头文件当然就不用了)。

2  设置工程的 Project Settings来加载DLL的LIB文件

打开工程的 Project Settings菜单,选中Link,然后在Object/library modules下的文本框中输入DLL的LIB文件,如you.lib(或者lib文件的路径,包括文件名)。然后在首先要使用该函数的地方加上该LIB的头文件,如#include "..\lib.h"即可(没有头文件当然就不用了)。

3  通过程序代码的方式

加入预编译指令#pragma comment (lib,"*.lib"),这种方法优点是可以利用条件预编译指令链接不同版本的LIB文件。因为,在Debug方式下,产生的LIB文件是Debug版本,如Regd.lib;在薯弯Release方式下,产生的LIB文件是Release版本,如Regr.lib。然后在首先要使用该函数的地方加上该LIB的头文件,如#include "..\lib.h"即可(没有头文件当然就不用了)。

当应用程序对DLL的LIB文件加载后,还需要把DLL对应的头文件(*.h)包含到其中,在这个头文件中给出了DLL中定义的函数原型,然后声明

二, 显式的运行时链接  ,(我用的是此方法) 隐式链接虽然实现较简单,但除了必须的*.dll文件外还需要DLL的*.h文件和*.lib文件,在那些只提供*.dll文件的场合就无法使用,而只能采用显式链接的方式。这种方式通过调用API函数来完成对DLL的加载与卸载,能更加有效地使用内存,在编写大型应用程序时往往采用此方式。这种方法编程具体实现步骤如下: ①使用Windows API函数Load Library或者MFC提供的AfxLoadLibrary将DLL模块映像到进程的内存空间,对DLL模块进行动态加载。 ②使用GetProcAddress函数得到要调用DLL中的函数的指针。 ③不用DLL时,用Free Library函数或者AfxFreeLibrary函数从进程的地址空间显式卸载DLL。 例:在应用程序中调用dll文件

——在应用程序中要首先装入dll后才能调用导出表中的函数,例如用mfc

创建基于对话框的工程test,并在对数碧闷话框上放置"load"按钮,先添加装载代码。 1.首先在testdlg.cpp的首部添加变量设置代码:

//设置全局变量glibsample用于存储dll句柄

HINSTANCE  glibsample=null  //如果定义成HANDLE类型,则出错

//第二个变量showme是指向dll 库中showme()函数的指针

typedef int(* Showme)(void)

Showme showme

2.利用classwizard为"load"按钮添加装载dll的代码

void ctestdlg::onloadbutton()

{

//要添加的代码如下

if(glibsample!=NULL)

{

AfxMessageBox("the sample.dll has already been load.")

return

}

//装载sample.dll,未加路径,将在三个默认路径中寻找 (1)windows的系统目录:\windows\system

//(2)dos中path所指出的任何目录

//(3)程序所在的目录

glibsample=Loadlibrary("sample.dll")

//返回dll中showme()函数的地址

showme=(Showme)GetProcAddress(glibsample,"showme")

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(函数)


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

原文地址: http://outofmemory.cn/yw/12518212.html

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

发表评论

登录后才能评论

评论列表(0条)

保存