#ifndef _DLL_TUTORIAL_H_
#define _DLL_TUTORIAL_H_
#include <iostream>
#if defined DLL_EXPORT
#define DECLDIR __declspec(dllexport)
#else
#define DECLDIR __declspec(dllimport)
#endif
extern "C"
{
DECLDIR int Add( int a, int b );
DECLDIR void Function( void );
}
#endif
代码
DECLDIR __declspec(dllexport)
真正的作用是什么? 最佳答案
在微软世界,__declspec(dllexport)
使函数或类可以从dll外部调用。
创建dll时,默认情况下,dll中定义的任何函数都只能从同一个dll调用。不能从可执行文件或其他dll调用该函数。
如果希望从dll外部调用a函数,则需要通过添加__declspec(dllexport)
将其导出。
一种考虑方法是__declspec(dllexport)
将函数标记为dll公共接口的一部分。
而你没有问关于__declspec(dllimport)
的事,那是相反的。当调用另一个dll中的函数时,dll需要知道它是另一个dll的公共接口的一部分,这样它才能正确地处理调用(调用另一个dll中的函数需要比调用自己的函数更复杂的代码)。