运送C dll时只暴露出C api

运送C dll时只暴露出C api,第1张

概述我正在编写一个软件,其API仅用于C,因为很容易将C代码与其他软件/客户端链接起来. 然而,实际的程序代码是在C中完成的,使用了所有常见的C功能,例如异常,STL等. 导出的API /标题本身将使用导出“C”关键字以纯C编写. 如果我打算将这个dll提供给那些不了解C的用户,我应该警惕什么?通常,他们不应该关心实际代码是在C中的事实,并且只需要知道如何通过头文件链接C代码. 我被告知我应该确保li 我正在编写一个软件,其API仅用于C,因为很容易将C代码与其他软件/客户端链接起来.

然而,实际的程序代码是在C中完成的,使用了所有常见的C功能,例如异常,STL等.

导出的API /标题本身将使用导出“C”关键字以纯C编写.

如果我打算将这个dll提供给那些不了解C的用户,我应该警惕什么?通常,他们不应该关心实际代码是在C中的事实,并且只需要知道如何通过头文件链接C代码.
我被告知我应该确保libstd是静态链接的,这在所有平台上都是不可能的(将有一个linux和一个windows版本).异常怎么样?等等

解决方法 1)将标题包装在:

#ifdef __cplusplusextern "C" {#endif

2)制作不透明指针:

struct myInternalStructFOO; // incomplete typetypedef struct myInternalStructFOO *cFOO; // public typeclass myInternalClassbar; // incomplete typetypedef class myInternalClassbar *cbar; // public type

你不需要在你的公共API中给出类定义.类定义将放在一些私有头文件中.

总结

以上是内存溢出为你收集整理的运送C dll时只暴露出C api全部内容,希望文章能够帮你解决运送C dll时只暴露出C api所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1227625.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存