dllexport、dllimport区别

来源:互联网 发布:dear sister知乎 编辑:程序博客网 时间:2024/05/18 02:04

以下全部是经过实际测试过的(测试环境VS2010):
要将某个库文件导出成dll的时候
可以使用dllexport、实际上也可以使用dllimport,
例如有一个类
class myclass{
int func();
int func1();
}
要将这个类进行导出成库文件,那么只需要这样定义(下面所有的代码都假设你在生成库文件的代码中自定义了宏名:DLL_EXPORT):

#define DLL_EXPORT __declspec(dllexport)class DLL_EXPORT myclass{    int func();    int func1();}

就可以导出库文件,在调用的时候,可以直接指定头文件和库路径就可以使用该库,另外,针对面的类还可以这样:

#define DLL_EXPORT __declspec(dllimport)class DLL_EXPORT myclass{    int func();    int func1();}

即,将export,改成import,也是可以生成库文件,并可以被调用
但是,需要注意的是,如果类中有static 的变量的时候,只使用dllimport生成库文件会报错(只有static函数没有static变量时不会报错):

#define DLL_EXPORT __declspec(dllimport)class DLL_EXPORT myclass{    int func();    int func1();    static int m_value;}

这样生成库文件会报错!
另外,不论是__declspec(dllimport),还是__declspec(dllexport),至少都需要加一个,如果都不加,会报错

0 0