如何正确导出共享库符号(用于从Visual Studio中的客户端代码进行链接),同时确保代码是跨平台的?具体是使用.def推荐的方式,还是应该使用__declspec(dllexport)平台特定的宏?如果应该使用宏,你能举一个跨平台友好的例子吗?使用.def或__declspec(dllexport)为跨平台代码导出共享库符号?
我有一些跨平台使用的本机C++代码,并使用Cmake生成.sln/.vcxproj文件,该文件创建用于Windows的.dll文件。要从C++/CLI包装器(也是一个DLL)链接到此DLL,我需要.lib,它需要导出符号。我知道我需要使用__declspec(dllexport)或.def文件。我的担忧是我不想用MSVC的东西来调节共享代码(我们需要支持Linux,iOS,Mac OSX,Android ...)。
你见过http://gcc.gnu.org/wiki/Visibility – 2012-07-17 16:47:56
你已经回答了这个问题。您可以使用.def文件来定义导出(不考虑源代码),或者如果注释不重要,可以向源添加注释。你的选择! – 2012-07-17 18:21:47
我不确定在这种情况下.def是否正确。我可以导出函数。对于导出类,我需要使用具有其关注的mangled名称:http://stackoverflow.com/questions/186232/exporting-dll-c-class-question-about-def-file – 2012-07-17 19:27:21