如何使用 dll

如何使用 dll,第1张

1、创建dll:

在.cpp头部加上如下语句:#define DLLEXPORT __declspec(dllexport)

2、实现函数:DLLEXPORT int Add(int first,int second)

{ return (first+second)}

3、 使用Dll:在要使用该dll中函数的头文件中加入:

#define DLLIMPORT __declspec(dllimport)

#pragma comment(lib,"cal.lib")

DLLIMPORT int Add(int first,int second)

4、 如果使用了新建头文件,则包含该头文件再引用dll中的函数。

二、导出class的DLL

1、 在要导出的dll中,右键点击ClassView的根目录->New Class->Generic,添加一新类CRectArea

2、 在新添加类头文件中加入:#define DLLEXPORT __declspec(dllexport)

3、 在类前加入DLLEXPORT:class DLLEXPORT CRectArea{…}

4、 加入实现函数

5、 在.exe中,在要调用dll中函数的类前加入#define DLLIMPORT __declspec(dllimport)、#pragma comment(lib,”Calc.lib”)及#include “RectArea.h”

6、 将RectArea.h 及.dll、.lib copy到当前.exe目录下,将.h添加到工程中

7、 在头文件中声明变量:CRectArea m_RectArea

8、 调用Dll中类的函数

三、通过.DEF文件创建Dll

1、在Dll的CXXXApp头文件中添加函数声明:int Mul(int,int)double Div(double,double)

2、在.cpp中实现之:int Mul(int a,int b) { return a*b}

double Div(double a,double b) { return a/b}

3、找到.DEF文件并打开,EXPORTS

Explicit exports can go here

Mul @1 (新加行)

Div @2 (新加行)

4、在调用的头文件中加入:typedef int (CALLBACK *LPMUL)(int,int)及 typedef double (CALLBACK *LPDIV)(double,double)

5、 在调用文件中加入代码: UpdateData(TRUE)

HINSTANCE hInst = LoadLibrary("Cal.dll")

LPNUM lpNum

lpNum = (LPNUM)GetProcAddress(hInst,"Mul")

m_c = lpNum(m_a,m_b)

UpdateData(FALSE)

FreeLibrary(hInst)及(因为有两个函数Mul&Div)

UpdateData(TRUE)

HINSTANCE hInst = LoadLibrary("Cal.dll")

LPFNUM lpfNum

lpfNum = (LPFNUM)GetProcAddress(hInst,"Div")

m_last = lpfNum(m_first,m_second)

UpdateData(FALSE)

FreeLibrary(hInst)

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/shg104/archive/2006/07/04/875592.aspx

我这里没找到你这个版本的spcomm组件,是dll的还是pas的。我分析了一下你的代码,感觉代码没问题,buffer的长度为7,7个数字也全部输出了。所以感觉问题还是出在sio_write函数上,你可以查看一下源函数,估计原函数输出的时候以4位输出。00是高位,所以值大小并有改变。


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

原文地址:https://54852.com/bake/7957071.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存