gpt4 book ai didi

c++ - 在 Linux 中显式导出共享库函数

转载 作者:IT老高 更新时间:2023-10-28 12:37:55 29 4
gpt4 key购买 nike

是否有与 Linux 等效的 __declspec(dllexport) 表示法用于从共享库中显式导出函数?由于某种原因,我正在使用的工具链中,非类成员的函数不会出现在生成的共享库文件中。

最佳答案

__attribute__((visibility("default")))

据我所知,没有与 __declspec(dllimport) 等效的东西。

#if defined(_MSC_VER)
// Microsoft
#define EXPORT __declspec(dllexport)
#define IMPORT __declspec(dllimport)
#elif defined(__GNUC__)
// GCC
#define EXPORT __attribute__((visibility("default")))
#define IMPORT
#else
// do nothing and hope for the best?
#define EXPORT
#define IMPORT
#pragma warning Unknown dynamic link import/export semantics.
#endif

典型用法是定义像 MY_LIB_PUBLIC 这样的符号,有条件地将其定义为 EXPORTIMPORT,具体取决于库当前是否正在运行编译与否:

#if MY_LIB_COMPILING
# define MY_LIB_PUBLIC EXPORT
#else
# define MY_LIB_PUBLIC IMPORT
#endif

要使用它,你可以像这样标记你的函数和类:

MY_LIB_PUBLIC void foo();

class MY_LIB_PUBLIC some_type
{
// ...
};

关于c++ - 在 Linux 中显式导出共享库函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2164827/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com