如何在确保代码跨平台的同时正确导出共享库符号(用于从 Visual Studio 中的客户端代码链接)?具体来说是使用 .def 推荐的方式还是应该为 __declspec(dllexport) 使用特定于平台的宏?如果应该使用宏,你能举一个跨平台友好的例子吗?
我有一些用于跨平台使用的本机 C++ 代码,并使用 Cmake 生成 .sln/.vcxproj 文件,该文件创建用于 Windows 的 .dll 文件。要从 C++/CLI 包装器(也是一个 dll)链接到这个 dll,我需要有 .lib,它需要导出符号。我了解到我需要使用 __declspec(dllexport) 或 .def 文件。我担心的是我不想用 MSVC 的东西来调整共享代码(我们需要支持 Linux、iOS、Mac OSX、Android ......)。