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宏,也没有定义相关的模块定义文件,导致在链接时,总是提示对应函数链接不成功错误。
解决方案就是在项目中添加对应的模块定义文件。
另外,如果是编译64bit的libx265动态库,需要将工程的平台修改成x64。具体方法是在属性也的配置管理器中进行配置
最后,修改目标计算机为X64,否则因目标不匹配而无法通过编译。
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
工程属性设置
使用动态库中全局变量,必须使用 _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官方示例
https://msdn.microsoft.com/zh-cn/library/8fskxacy.aspx
2016-03-15:关于VS中模块定义文件的更多相关文章
- [转]VS2010中使用模块定义文件(.def)
都知道在写DLL的时候,使用模块定义文件(.def)可以防止DLL里的命名变更. vc6.0中只要在当前目录下添加.def文件,然后编译就Ok了 但在vs2010里这样做是不可以的,必须在项目--属性 ...
- 2016.8.15上午纪中初中部NOIP普及组比赛
2016.8.15上午纪中初中部NOIP普及组比赛 链接:https://jzoj.net/junior/#contest/home/1333 这次比赛不怎么好,因为这套题目我并不是很擅长. 可同学们 ...
- 第7.15节 Python中classmethod定义的类方法详解
第7.15节 Python中classmethod定义的类方法详解 类中的方法,除了实例方法外,还有两种方法,分别是类方法和静态方法.本节介绍类方法的定义和使用. 一. 类方法的定义 在类中定 ...
- 模块定义文件.def
一作用 DLL中导出函数的声明有两种方式:一种为在函数声明中加上__declspec(dllexport),这里不再举例说明:另外一种方式是采用模块定义(.def) 文件声明,.def文件为链接器提供 ...
- Python中模块安装文件的创建及使用
在Python编程中,我们常常需要自己编写模块,当模块文件写好了,就需要创建安装文件,方便模块的发布. 此时,常用的方法,就是使用Python distutils(代表distribution uti ...
- 详解模块定义(.def)文件
一个完整的Windows应用程序(C++程序)通常由五种类型的文件组成:源程序文件,头文件,资源描述文件,项目文件,模块定义文件.本文主要讲解模块定义文件. 模块定义 (.def)文件为链接器提供有关 ...
- DLL用def定义文件来导出重载函数(转)
动态链接库DLL_Sample.dll DLL_Sample.h:#ifdef TEST_API# define TEST_API _declspec(dllexport)#else# define ...
- Kali linux 2016.2(Rolling)中的payloads模块详解
不多说,直接上干货! 前期博客 Kali linux 2016.2(Rolling)中的Exploits模块详解 payloads模块,也就是shellcode,就是在漏洞利用成功后所要做的事情.在M ...
- 可用于在 Microsoft.NET Framework 4.0 中的 ASP.NET 浏览器定义文件的修补程序
http://support.microsoft.com/kb/2600088 此修补程序为 Internet Explorer 和 Mozilla Firefox 在浏览器定义文件引入了更新的定义. ...
随机推荐
- 2. scala中的数组
一. 数组声明 定长数组 scala> new Array[String](5) res1: Array[String] = Array(null, null, null, null, null ...
- 有关C,C++,C#, Java的图形图像处理类库 整理(未完待续)
1.Java相关 1.1 Jzy3D Jzy3D 是一个Java的类库,用来绘制各种各样的三维图形,如下图所示: 下载地址:jzy3d-api,官网 1.2 Proscene 是一个用于创建交互式3D ...
- python(17) 获取acfun弹幕,评论和视频信息
每天一点linux命令:新建文件夹
- UI设计原则
一.一般原则 简单明了原则: 方便使用原则: 用户向导原则: 实时帮助原则: 自定义功能原则: 界面色彩原则: 二.Web系统适应原则 页面要瘦小 屏幕自适应 浏览器兼容 减少垂直滚动条 禁止水平滚动 ...
- 在win7电脑中如何查看运行进程的PID标识符
在介绍技巧方法之前,咱们还是先来介绍一下什么是PID标识符,这个PID标识符就是系统对运行中的程序自动分配的一个编号,是用来识别对应进程的,而且这个编号也是一一对应,不会有重复的,只有当系统结束运行的 ...
- JavaScript判断字符串是否含有中文(实用)
引用页: http://javasam.iteye.com/blog/1465048 UTF-8有点类似于Haffman编码,它将Unicode编码为:0x00-0x7F的字符,用单个字节来表示:0x ...
- Jmeter+jenkins接口性能测试平台实践整理(一)
最近两周在研究jmeter+Jenkin的性能测试平台测试dubbo接口,分别尝试使用maven,ant和Shell进行构建,jmeter相关设置略. 一.Jmeter+jenkins+Shell+t ...
- [Flex] PopUpButton系列 —— 打开和关闭弹出菜单
<?xml version="1.0" encoding="utf-8"?><!--响应打开和关闭弹出菜单的例子 PopUpButtonOpe ...
- role在标签中的作用是什么?
html 里面的 role 本质上是增强语义性,当现有的HTML标签不能充分表达语义性的时候,就可以借助role来说明.通常这种情况出现在一些自定义的组件上,这样可增强组件的可访问性.可用性和可交互性 ...
- TestNG运作报错An interanl error occurred during:"Launching first"
备注:我建的类名就叫做“first” 解决办法:卸载掉TestNG M2E Help-->Install new software-->What is already installed? ...