DLL文件的说明和使用

opencv中的一段代码:

#if (defined WIN32 || defined _WIN32 || defined WINCE) && defined CVAPI_EXPORTS

#  define CV_EXPORTS __declspec(dllexport)
#else
#  define
CV_EXPORTS

#endif

下面是函数的声明:

CV_EXPORTS_W void addWeighted(InputArray src1, double alpha, InputArray src2,  double beta, double gamma, OutputArray dst, int dtype=-1);

C++生成和使用DLL与LIB库文件

两种库:

  包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library

  包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库static link library

共有两种链接方式:

 

  动态链接使用动态链接库,允许可执行模块(.dll文件或.exe文件)仅包含在运行时定位DLL函数的可执行代码所需的信息。

静态链接使用静态链接库,链接器从静态链接库LIB获取所有被引用函数,并将库同代码一起放到可执行文件中。

两种文件的区别

使用lib需注意两个文件:

· .h头文件,包含lib中说明输出的类或符号原型或数据结构。应用程序调用lib时,需要将该文件包含入应用程序的源文件中。

· .LIB文件。


使用dll需注意三个文件:

· .h头文件,包含dll中说明输出的类或符号原型或数据结构的.h文件。应用程序调用dll时,需要将该文件包含入应用程序的源文件中。

· .LIB文件,是dll在编译、链接成功之后生成的文件,作用是当其他应用程序调用dll时,需要将该文件引入应用程序,否则产生错误(如果不想用lib文件或者没有lib文件,可以用WIN32 API函数LoadLibrary、GetProcAddress装载)。

· dll文件,真正的可执行文件,开发成功后的应用程序在发布时,只需要有.exe文件和.dll文件,并不需要.lib文件和.h头文件。

 

生成和使用方法Windows下的VS2010

1.生成lib文件

  首先,我们先建立一个控制台工程(新建->工程->控制台程序),添加sub.cpp以及sub.h文件。

 

 

 

 

//sub.h

#ifndef _SUB_H

#define _SUB_H

void sub(int a,int b);

#endif

 

//sub.cpp

#include "sub.h"

#include <iostream>

 

void sub(int a,int b)

{

    std::cout<<(a-b)<<std::endl;

}

 

 

由于在工程中,没有main()函数,所以直接编译出错。这时,要右键点击工程,并选择工程属性,出现下图,选择静态库即可

 

再按F7,build solution即可产生lib文件。在Debug中只生成.lib文件

 

2.生成dll文件

生成dll文件的过程与上面的过程是一样的,只是在选择Dynamic Library(.dll)即可。在Debug中会生成一个.lib和.dll两种文件。

 

 

3.两种文件的使用

(1)在使用时,静态链接库只要把.h和.lib文件加入到工程文件夹中即可。

(2)而动态链接库要把.h、.lib和.dll文件加入到工程中。

(1)静态链接库使用:把.h和.lib文件加入到工程文件夹中即可

隐式链接

第一种方法是:通过project->link->Object/Library Module中加入.lib文件(或者在源代码中加入指令#pragma comment(lib, “sub.lib”)),并将.dll文件置入工程所在目录,然后添加对应的.h头文件。

#include <iostream>

#include "sub.h"   //链接库的头文件

using namespace std;

 

#pragma comment(lib,"sub.lib"//加入链接库

int main()

{

sub(5,4);

system("pause");

return 0;

}

 

 

程序运行结果如下:

 

4.仅有.dll文件时候的使用方法

在没有.h和.lib文件时,需要函数指针和WIN32 API函数LoadLibrary、GetProcAddress装载,只需要.dll文件即可(将.dll文件置入工程目录中)。

 

sub.hsub.cpp中代码分别为:

//sub.h

#ifndef _SUB_H

#define _SUB_H

extern "C"_declspec(dllexport)void sub(int a,int b);  

#endif

//sub.cpp

#include "sub.h"

#include <iostream>

using namespace std;

__declspec(dllexportvoid __cdecl sub(int a,int b)

 

{

cout<<(a-b)<<endl;

}

 

 

调用dll文件的程序编写:

 

 

#include <iostream>

#include <windows.h>               // //使用函数和某些特殊变量

typedef void (__cdecl*DLLFunc)(int,int);  //确定调用函数的形参

int main()

{

    DLLFunc dllFunc;

    HINSTANCE hInstLibrary = LoadLibrary(TEXT("Sub.dll"));//加载.dll

int a=5,b=4;

    if (hInstLibrary == NULL)

    {

puts("1.载入DLL文件失败!");

        FreeLibrary(hInstLibrary);

    }

else

{

dllFunc = (DLLFunc)GetProcAddress(hInstLibrary, "sub");//第二个参数为要调用的函数名称

if (dllFunc == NULL)

{

puts("2.获取函数地址失败!");

FreeLibrary(hInstLibrary);

 }

else

{

 dllFunc(a,b);

}

}

    FreeLibrary(hInstLibrary);

system("pause");

    return 0;

}

 

 

 

 

注意:

若要提高代码的可读性,请为 __declspec(dllimport) 定义一个宏,然后使用此宏声明每个导入的符号

#define DllImport   __declspec( dllimport )  

DllImport int  j;  

DllImport void func();  

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MathMLControl.DLL是一个用于在Windows系统中显示数学公式的动态链接库文件。它可以通过调用Windows API函数来实现数学公式的显示和渲染。 以下是一个简单的使用MathMLControl.DLL显示数学公式的例子: 1. 首先,你需要将MathMLControl.DLL文件复制到你的Windows系统目录下,例如:C:\Windows\System32\。 2. 在Python中,你可以使用ctypes模块来调用MathMLControl.DLL。为此,你需要先导入ctypes模块,并使用ctypes.cdll.LoadLibrary()函数加载MathMLControl.DLL文件,如下所示: ``` import ctypes mathml = ctypes.cdll.LoadLibrary("MathMLControl.dll") ``` 3. 接下来,你需要定义一个窗口来显示数学公式。可以使用Windows API函数CreateWindowEx()来创建一个窗口,如下所示: ``` import win32api import win32con hwnd = win32api.CreateWindowEx(0, "STATIC", "", win32con.WS_CHILD | win32con.WS_VISIBLE, 0, 0, 300, 300, parent_hwnd, None, None, None) ``` 其中,parent_hwnd是父窗口的句柄。如果你想在一个单独的窗口中显示数学公式,可以将parent_hwnd设置为0,表示没有父窗口。 4. 最后,你可以使用MathMLControl.DLL提供的函数来显示数学公式。例如,你可以调用MathMLControl.DLL中的MathMLControl_SetMathML()函数来设置要显示的数学公式,如下所示: ``` mathml.MathMLControl_SetMathML(hwnd, "<math><mrow><mi>x</mi><mo>+</mo><mi>y</mi></mrow></math>") ``` 其中,第一个参数hwnd是窗口句柄,第二个参数是要显示的数学公式的MathML代码。 以上就是一个简单的使用MathMLControl.DLL显示数学公式的例子。当然,具体的使用方法还需要根据你的具体需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值