2016-03-15:关于VS中模块定义文件

1 def模块定义文件

在使用开源库libx265时,因x265项目的头文件x265中有如下的宏定义

#ifdef X265_API_IMPORTS
#define X265_API __declspec(dllimport)
#else
#define X265_API
#endif

当使用libx265动态库时,因没有定义X265_API_IMPORTS宏,也没有定义相关的模块定义文件,导致在链接时,总是提示对应函数链接不成功错误。

解决方案就是在项目中添加对应的模块定义文件。

image

另外,如果是编译64bit的libx265动态库,需要将工程的平台修改成x64。具体方法是在属性也的配置管理器中进行配置

image

最后,修改目标计算机为X64,否则因目标不匹配而无法通过编译。

image

2 引用动态库中全局变量

示例如下:创建动态库,使用def文件导出变量和函数

动态库头文件lib.h

#ifndef _LIB_H
#define _LIB_H

void lib_printf();

#endif

动态库实现文件lib.c,并且定义全局变量

#include "lib.h"
#include <stdio.h>

void lib_printf()
{
    printf("this is lib_printf\n");
}

int lib_int = 10;

模块定义文件lib.def

EXPORTS
    lib_printf
    lib_int DATA

工程属性设置

image

使用动态库中全局变量,必须使用 _declspec(dllimport)导入

#include "lib.h"
#include <stdio.h>

extern int _declspec(dllimport) lib_int;

int main()
{
    lib_printf();
    printf("lib int [%d]\n", lib_int);
    return 0;
}

3 MSDN官方示例

image

https://msdn.microsoft.com/zh-cn/library/8fskxacy.aspx

posted on 2016-03-15 16:29  octocat 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/zhouLee/p/5280014.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值