Windows和Linux上的C++ [[gnu :: visibility("default")]] vs __declspec(dllexport)

 mobiledu2502873927 发布于 2023-01-31 15:48

我需要在C++中创建一些共享库,并使用linux作为我的开发人员操作系统.我知道如果我想通过dlsym/ 加载它们,我需要使符号可见LoadLibrary.所以在linux中我的所有符号都遵循这种模式:

extern "C" [[gnu::visibility("default")]] void f();

我使用了启用了C++ 11的clang,我能够加载f我的宿主程序.当我移动到Windows时,我使用GCC 4.8.2启用了C++ 11,并且该模式也适用于Windows机器LoadLibrary.(我需要使用C++ 11来获取新的属性语法).我知道在Windows上我需要用来__declspec(dllexport)从共享库中导出符号.所以现在怎么办?是__declspec(dllexport)不是不再需要?

编辑:

我发现在这里,那些是同义词(我认为),所以问题是,是否有一个[[gnu::attribute]]用于__declspec(dllimport)避免使用宏和ifdefS代表具体的目标?

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有