c++ - 将一个dll导入另一个dll C++

标签 c++ dll c-preprocessor dllimport dllexport

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

我使用以下宏来为我的 dll 的所有 header 指定 __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)还是有一种干净的方法来获取 DLLEXPORT在 dllA 中返回时返回旧值?

最佳答案

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

关于c++ - 将一个dll导入另一个dll C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11246617/

相关文章:

java - 如何在java中访问DLL文件?

excel - 我需要设置excel工作表的路径,以便我可以使用相对路径加载dll

c++ - #include 指令中文件名的有效字符

c++ - C/C++ 需要一种巧妙的方法来跟踪函数调用

c++ - Python 与 C : different outputs

c++ - 卷影复制 (VSS)

c++ - C++ 中的字符串、整数和 float 验证

c++ - 2 个 vector 与结构 vector 的效率

.net - 如何将 dll 导入到在网络服务器上运行的 ASP.NET Web 应用程序中

c++ - Boost Wave 不能做什么?