动态链接库示例(Win7+VS2010)

操作系统: Win7 ; IDE: VS2010 Express(学习版)

1 构建动态链接库

1.1 创建解决方案mydll_demo,空项目mydll;

1.2 设置mydll项目属性的配置类型为”动态库(.dll)”(配置属性->常规->配置类型);
这里写图片描述

1.3 向mydll项目中添加文件mydll.h,mydll.c,文件内容如下:
mydll.h

#ifndef MYDLL_H_
#define MYDLL_H_

#ifdef MYDLL_EXPORT
#define MYDLL_API __declspec(dllexport)
#else
#define MYDLL_API __declspec(dllimport)
#endif

#ifdef __cplusplus
extern "C" {
#endif

MYDLL_API double add(double param1, double param2);

#ifdef __cplusplus
}
#endif

#endif

mydll.c

#include "mydll.h"

MYDLL_API double add(double param1, double param2)
{
    return (param1 + param2);
}

1.4 设置mydll项目预定义宏(配置属性->C/C++->预处理器->预处理器定义)
这里写图片描述

1.5 编译生成mydll.lib、mydll.dll(默认解决方案Debug目录)

备注: mydll.h编译宏的设置参考googletest -> gtest-port.h

// GTEST_API_ qualifies all symbols that must be exported. The definitions below
// are guarded by #ifndef to give embedders a chance to define GTEST_API_ in
// gtest/internal/custom/gtest-port.h
#ifndef GTEST_API_

#ifdef _MSC_VER
# if GTEST_LINKED_AS_SHARED_LIBRARY
#  define GTEST_API_ __declspec(dllimport)
# elif GTEST_CREATE_SHARED_LIBRARY
#  define GTEST_API_ __declspec(dllexport)
# endif
#elif __GNUC__ >= 4 || defined(__clang__)
# define GTEST_API_ __attribute__((visibility ("default")))
#endif  // _MSC_VER

#endif  // GTEST_API_

#ifndef GTEST_API_
# define GTEST_API_
#endif  // GTEST_API_

2 测试动态链接库

2.1 向解决方案mydll_demo添加空的控制台(Console)项目mydll_test

2.2 设置mydll_test项目属性
2.2.1 VC++ 目录->包含目录为mydll.h所在路径;
2.2.2 VC++ 目录->库目录为mydll.lib所在路径;
这里写图片描述
2.2.3 链接器->输入->附加依赖项为mydll.lib;
这里写图片描述

2.3 向mydll_test项目添加源文件source.cpp,文件内容如下:

#include "mydll.h"
#include <iostream>

int main(void)
{
    double param1 = 100;
    double param2 = 200;

    std::cout << "Sum: " << add(param1, param2) << std::endl;

    std::cin >> param1;
    return 0;
}

2.4 编译生成mdll_test.exe,双击运行;

注意:如果提示丢失mydll.dll文件,将mydll.dll拷贝到mdll_test.exe文件所在目录。

3 参考链接

[1] declspec(dllexport)和declspec(dllimport) 的使用说明
[2] Windows C++中__declspec(dllexport)的使用
[3] VS2013下静态链接库(lib)和动态链接库(dll)的生成与使用
[4] VS2010下静态链接库和动态链接库的生成和使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值