【发布时间】:2012-02-07 08:47:22
【问题描述】:
当我在 C++ 项目中以这种方式定义一个类时,究竟是什么意思:
类 THIS_DLL_NAME 类名{ ... }
谢谢!
【问题讨论】:
-
很可能,
THIS_DLL_NAME是一些宏。检查头文件是什么... -
唯一真正适合的就是 __declspec(dllexport)
-
导出类非常脆弱。
当我在 C++ 项目中以这种方式定义一个类时,究竟是什么意思:
类 THIS_DLL_NAME 类名{ ... }
谢谢!
【问题讨论】:
THIS_DLL_NAME 是一些宏。检查头文件是什么...
正如 Basile 和 Hans 在上面的 cmets 中所说,THIS_DLL_NAME 将是一个宏,它会根据您是构建库本身还是仅使用该库的代码有条件地扩展。
(顺便说一句,由于 DLL 术语,我假设您在这里使用的是 Windows。)
THIS_DLL_NAME 可以扩展为 __declspec(dllexport) 或 __declspec(dllimport)。当头文件包含在您正在编译到 THIS_DLL.dll 的 .cpp 文件中时,编译器需要查看 __declspec(dllexport) 以便生成正确的入口点以从 DLL 中导出它们。
当您的类头包含在使用 THIS_DLL.dll 的代码中时,编译器需要查看 __declspec(dllimport) 才能生成正确的代码来导入符号(并在运行时解析它)。
您可以在这篇文章中直接从 Microsoft 阅读更多详细信息 - Importing and Exporting (MSDN)。
【讨论】: