加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 使用.def或__declspec(dllexport)导出跨平台代码的共享库符

发布时间:2020-12-16 07:31:34 所属栏目:百科 来源:网络整理
导读:如何在确保代码是跨平台的同时正确导出共享库符号(用于从Visual Studio中的客户端代码进行链接)?具体是使用.def推荐的方式还是我应该为__declspec(dllexport)使用特定于平台的宏?如果应该使用宏,你能给出一个跨平台友好的例子吗? 我有一些用于跨平台使用
如何在确保代码是跨平台的同时正确导出共享库符号(用于从Visual Studio中的客户端代码进行链接)?具体是使用.def推荐的方式还是我应该为__declspec(dllexport)使用特定于平台的宏?如果应该使用宏,你能给出一个跨平台友好的例子吗?

我有一些用于跨平台使用的本机C代码,并使用Cmake生成.sln / .vcxproj文件,该文件创建.dll文件以供在Windows中使用.要从C/C++LI包装器(也是一个dll)链接到这个dll,我需要有.lib,它需要导出符号.我了解到我需要使用__declspec(dllexport)或.def文件.我担心的是我不想用MSVC来缓和共享代码(我们需要支持Linux,iOS,Mac OSX,Android ……).

解决方法

SethCarnegie的链接gcc.gnu.org/wiki/Visibility可能是这个问题的间接答案.简而言之,我决定使用宏(预处理器符号),这似乎适用于具有一些规划的跨平台.虽然.def与代码分开,但是没有相应的导入方式,即我仍然需要使用__declspec(dllimport) – 不是很干净的IMO.

如果您不熟悉这个主题(跨平台,使用托管代码中的非托管C),就像我一样,您可以看到我在这里做的例子(参见问题部分):
Link error linking from managed to unmanaged C++ despite linking to .lib file with exported symbols

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读