动态链接库的创建和使用

动态链接库的创建和使用

一. 创建动态链接库

1. 创建动态链接库项目

1. 1 动态链接库(DLL)

在这里插入图片描述

项目结构如下

在这里插入图片描述

为了节约大型项目的编译时间,系统自动为我们生成了和预编译头相关两个文件pch.cpppch.h,我们可以选择保留或者是删除他们。如果决定保留则需要在项目中每个源文件的最前面加入#include "pch.h",否则无法通过编译。如果删除了他们,同时还需要到项目属性中禁用预编译头,具体方法如下:

在这里插入图片描述

dllmain.cpp定义了动态库的入口,当系统开始或终止一个进程或线程的时候,会调用每个被加载的动态库的DllMain函数,此外在使用LoadLibrary加载一个动态库,或者FreeLibrary卸载一个动态链接库的时候该函数也会被调用。该函数的ul_reason_for_call参数记录了其被调用的原因,我们可以在函数体内通过一个switch语句对特定时间做出响应。该函数默认代码如下:

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
   
    switch (ul_reason_for_call)
    {
   
    case DLL_PROCESS_ATTACH:
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}
1.2 具有导出项的(DLL)动态链接库

在这里插入图片描述

另一种方法是创建具有导出项的动态链接库项目,和上面类似,只是这种项目自动生成了和项目同名的头文件和源文件,用于编写导出函数。

1.3 空项目

如果嫌以上系统提供的动态链接库模板内容繁琐,也可以创建空项目自行配置:

首先修改项目类型为动态库:

在这里插入图片描述

之后添加用于声明和实现导出函数的源文件和头文件,源码见下一小节。

2. 导出函数

2.1 动态链接库(DLL)

首先在头文件function.h中声明导出函数swapNumber,编写如下代码:

#pragma once
extern "C"
{
   
	
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Python创建动态链接库DLL),你可以使用`ctypes`库。下面是一个简单的示例: 1. 首先,创建一个Python脚本(例如,`example.py`),并在其中编写你的函数或代码逻辑。 ```python # example.py def add_numbers(a, b): return a + b ``` 2. 使用`cython`库将Python代码转换为C代码。你可以使用以下命令安装`cython`: ``` pip install cython ``` 然后,创建一个名为`example.pyx`的文件,其中包含以下内容: ```python # example.pyx def add_numbers(a, b): return a + b ``` 3. 创建一个名为`setup.py`的文件,用于构建和编译动态链接库。在其中添加以下代码: ```python # setup.py from distutils.core import setup from Cython.Build import cythonize setup(ext_modules=cythonize("example.pyx")) ``` 4. 打开命令提示符或终端,并导航到包含上述文件的目录。然后运行以下命令来构建和编译动态链接库: ``` python setup.py build_ext --inplace ``` 这将生成一个名为`example.so`(Linux / macOS)或`example.dll`(Windows)的动态链接库文件。 5. 现在你可以在其他Python脚本中使用这个动态链接库。例如,创建一个名为`main.py`的文件,并添加以下代码: ```python # main.py from ctypes import CDLL # 加载动态链接库 example = CDLL('./example.so') # 替换为example.dll(Windows) # 调用动态链接库中的函数 result = example.add_numbers(2, 3) print(result) ``` 运行`main.py`脚本,将会输出结果 `5`。 这就是使用Python创建动态链接库的基本步骤。你可以根据自己的需求进行修改和扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值