【发布时间】:2011-05-15 15:53:28
【问题描述】:
我有一个使用 CMake 作为构建系统的共享库。它在带有 GCC 的 Linux 机器上编译得很好。现在我正在尝试在 Windows 上编译。 MSVC 在指定之前不会导出符号。我知道__declspec(dllexport)。但是 CMake wiki 中提供的示例令人困惑。请考虑以下代码。
#if defined (_WIN32)
#if defined(MyLibrary_EXPORTS)
#define MYLIB_EXPORT __declspec(dllexport)
#else
#define MYLIB_EXPORT __declspec(dllimport)
#endif /* MyLibrary_EXPORTS */
#else /* defined (_WIN32) */
#define MYLIB_EXPORT
#endif
我了解__declspec(dllexport),但想知道为什么使用__declspec(dllimport)?另外我该如何使用它?是不是像MYLIB_EXPORT void function()?
假设我有一个名为 foo() 的 C 函数。这在内部使用了几个static 函数。导出时是否也需要导出静态函数?还是仅导出属于 API 的入口函数就足够了?
任何帮助将不胜感激。
【问题讨论】:
标签: c visual-c++ cmake