#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中的函数需要比调用自己的函数更复杂的代码)。

07-26 01:44