将dll导入另一个DLL C ++

时间:2012-06-28 14:14:46

标签: c++ dll c-preprocessor dllimport dllexport

我在多个dll中有多个类,每个dll可能包含其他类。

我使用以下宏来为我的dll的所有标题指定__declspec参数:

#ifdef DLL_UTIL_A
#define DLLEXPORT __declspec(dllexport)
#else
#define DLLEXPORT __declspec(dllimport)
#endif

假设dllA包含dllB。 问题是,当我在dllA中包含dllB的头文件时,宏DLLEXPORT被重新定义为从dllB的头文件中导入类。当预处理器返回到dllA以继续解析时,它具有更新的DLLEXPORT,其中包含更新的不需要的值。

我应该为每个dll使用不同的定义(例如,DLLEXPORT替换DLLEXPORT_DLL_A),还是有一种干净的方法可以在dllA中返回时获取DLLEXPORT的旧值?

1 个答案:

答案 0 :(得分:2)

对于两个DLL,您需要为DLLEXPORT使用不同的宏名称。