我正在编写一个API仅打算用作C的软件,因为将C代码与其他软件/客户端链接起来很容易。
但是,实际的程序代码是使用所有常见的C ++功能(如异常,STL等)在C ++中完成的。
导出的API /标头本身将使用带有export "C"关键字的纯C语言编写。
如果我打算将此dll交付给不了解C ++的用户,该怎么办?通常,他们不必担心实际代码是C ++的事实,只需要知道如何通过头文件链接C代码即可。有人告诉我,我应该确保libstd是静态链接的,这可能并非在所有平台上都是可能的(会有linux和Windows构建)。例外情况如何?等等
1)将你的标题包裹在:
#ifdef __cplusplus
extern "C" {
#endif
Run Code Online (Sandbox Code Playgroud)
2)制作不透明指针:
struct myInternalStructFOO; // incomplete type
typedef struct myInternalStructFOO *cFOO; // public type
class myInternalClassBAR; // incomplete type
typedef class myInternalClassBAR *cBAR; // public type
Run Code Online (Sandbox Code Playgroud)
您无需在公共 api 中给出类定义。类定义将放在一些私有标头中。
| 归档时间: |
|
| 查看次数: |
373 次 |
| 最近记录: |