#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)真正做了什么?
解决方法
在Microsoft世界中,__ declspec(dllexport)使得函数或类可以从DLL外部调用.
在创建DLL时,默认情况下,DLL中定义的任何函数只能从同一DLL中调用.您无法从可执行文件或其他DLL调用该函数.
如果希望从DLL外部调用函数,则需要通过添加__declspec(dllexport)将其导出.
考虑它的一种方法是__declspec(dllexport)将函数标记为DLL的公共接口的一部分.
虽然你没有问__declspec(dllimport)是否相反.在不同的DLL中调用函数时,您的DLL需要知道它是不同DLL的公共接口的一部分,因此它可以正确处理调用(在不同的DLL中调用函数需要更复杂的代码来调用自己的函数).