__declspec(dllexport)

2024-08-31 19:08
文章标签 declspec dllexport

本文主要是介绍__declspec(dllexport),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文地址:__declspec(dllexport) 作者:独自等待

先看代码:以下是在dev-c++里建立自已的dll时的dll.h里面的代码,这里面有一个:_declspec(dllexport)

#ifndef _DLL_H_
#define _DLL_H_//防重复定义

#if BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
#else
# define DLLIMPORT __declspec (dllimport)
#endif


DLLIMPORT void HelloWorld (void);


#endif

 

上面代码里面的_delcspce(dllexport)被定义为宏,这样可以提高程序 的可读性!这个的作是是将函数定义为导出函数,也就是说这个 函数要被包含这个函数的程序之外的程序调用!本语句中就是:void Helloword(void):

摘自msdn:在 32 位编译器版本中,可以使用 __declspec(dllexport) 关键字从 DLL 导出数据、函数、类或类成员函数。__declspec(dllexport) 将导出指令添加到对象文件

若要导出函数,__declspec(dllexport) 关键字必须出现在调用约定关键字的左边(如果指定了关键字)。例如:

__declspec(dllexport) void __cdecl Function1(void);

若要导出类中的所有公共数据成员和成员函数,关键字必须出现在类名的左边,如下所示:

class __declspec(dllexport) CExampleExport : public CObject<br />{ ... class definition ... };

生成 DLL 时,通常创建一个包含正在导出的函数原型和/或类的头文件,并将 __declspec(dllexport) 添加到头文件中的声明。若要提高代码的可读性,请为 __declspec(dllexport) 定义一个宏并对正在导出的每个符号使用该宏:

#define DllExport   __declspec( dllexport ) 
__declspec(dllexport) 将函数名存储在 DLL 的导出表中。如果希望优化表的大小

转自:http://www.cnblogs.com/chinasasu/archive/2010/04/04/1704277.html

这篇关于__declspec(dllexport)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1124748

相关文章

C++的dllexport和dllimportnbsp;nbsp;…

C++的dllexport和dllimport: __declspec(dllexport) 声明一个导出函数,是说这个函数要从本DLL导出。我要给别人用。一般用于dll中省掉在DEF文件中手工定义导出哪些函数的一个方法。当然,如果你的DLL里全是C++的类的话,你无法在DEF里指定导出的函数,只能用__declspec(dllexport)导出类 __declspec(dllimport)

(转载)__declspec(dllimport)的作…

是时候总结一下__declspec(dllimport)的作用了。可能有人会问:__declspec(dllimport)和__declspec(dllexport)是一对的,在动态链接库中__declspec(dllexport)管导出,__declspec(dllimport)管导出,就像一个国家一样,有出口也有进口,有什么难理解的呢?这是一种很自然的思路,开始我也是这样理解。

LINK2019: unresolved external symbol __declspec(dllimport) public: class std::basic_string的解决方案

事情的起因是用VS2003编译ogre的时候,写了一个demo,死活链接不过,总是提示,unresolved external symbol "__declspec(dllimport) public: class std::basic_string,很郁闷的,甚至一度想要放弃VS2003算了,但是后来想想还是再找一找,最后在一国外论坛找到了解决方法,原文是这样的:   You should

C++部分关键字的作用-__declspec(dllexport)、__declspec(dllimport)、__attribute__、__cdecl

__declspec(dllexport)和__declspec(dllimport) 这个关键字主要用于Windows平台上的DLL编程。当你在一个DLL中定义一个函数或变量,并希望它能够被其他应用程序导入和使用时,你可以使用__declspec(dllexport)来标记这个函数或变量,这样编译器就会将其包含在DLL导出表来。__declspec(dllimport)跟__declspec(

error LNK2001: 无法解析的外部符号 “__declspec(dllimport) public: __cdecl ......

运行程序时,报如上图所示错误,其中一条是: ReflectionProbe.obj : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: __cdecl osg::Object::Object(bool)" (__imp_??0Object@osg@@QEAA@_N@Z)         报这个错误一般是因为使用了一些未定义或者

VS下 dllimport与dllexport作用与区别

原文:http://www.cnblogs.com/foohack/p/4119207.html 我相信写WIN32程序的人,做过DLL,都会很清楚__declspec(dllexport)的作用,它就是为了省掉在DEF文件中手工定义导出哪些函数的一个方法。当然,如果你的DLL里全是C++的类的话,你无法在DEF里指定导出的函数,只能用__declspec(dllexport)导出类

__declspec(dllexport)与.def文件

__declspec(dllexport)与.def文件在VC++中,如果生成DLL可以不使用.def文件。只需要在VC++的函数定义前要加__declspec(dllexport)修饰就可以了。但是使用__declspec(dllexport)和使用.def文件是有区别的。如果DLL是提供给VC++用户使用的,只需要把编译DLL时产生的.lib提供给用户,它可以很轻松地调用你的DLL。但是如果D

__declspec 详解

__declspec用于指定所给定类型的实例的与Microsoft相关的存储方式。其它的有关存储方式的修饰符如static与extern等是C和C++语言的ANSI规范,而__declspec是一种扩展属性的定义。扩展属性语法简化并标准化了C和C++语言关于Microsoft的扩展。 用法:__declspec ( extended-decl-modifier ) extended-decl-

[收藏]__declspec关键字详细用法

原文链接:http://hi.baidu.com/baiyw920/blog/item/a06ddb986314fd0f6e068c0c.html         __declspec用于指定所给定类型的实例的与Microsoft相关的存储方式。其它的有关存储方式的修饰符如static与extern等是C和C++语言的ANSI规范,而__declspec是一种扩展属性的定义。扩展属性语法简化并标

_declspec(dllexport)和.def(转)

节选自:windows下编译和使用动态库dll http://blog.eonew.cn/archives/865 Microsoft 在 Visual C++ 的 16 位编译器版本中引入了 __export,使编译器得以自动生成导出名并将它们放到一个 .lib 文件中。 然后,此 .lib 文件就可以像静态 .lib 那样用于与 DLL 链接。 在更新的编译器版本中,可以使用 declspe