Oracle® Solaris Studio 12.4:C++ 用户指南

退出打印视图

更新时间: 2014 年 12 月
 
 

14.7 生成具有 C API 的库

如果要生成以 C++ 编写但可用于 C 程序的库,必须创建 C API(application programming interface,应用程序编程接口)。为此,应先使所有导出的函数为 extern "C"。注意,只有在全局函数中才能够完成该操作,在成员函数中不行。

如果 C 接口库需要 C++ 运行时支持,且要使用 cc 进行链接,则在使用 C 接口库时,您还必须将您的应用程序与 libCrun 进行链接(标准模式)。(如果 C 接口库不需要 C++ 运行时支持,则不必与 libCrun 进行链接。)归档库与共享库的链接步骤是不同的。

提供归档的 C 接口库时,必须提供如何使用该库的说明。

  • 如果 C 接口库是在标准模式(缺省模式)下使用 CC 生成的,那么在使用该 C 接口库时,将 -lCrun 添加到 cc 命令行。

  • 如果 C 接口库是在兼容模式 (-compat=4) 下使用 CC 生成的,则在使用 C 接口库时,请将 -lC 添加到 cc 命令行。

提供共享的 C 接口库时,必须在生成库时创建对 libCrun 的依赖性。如果共享库具有正确的依赖性,则在使用该库时不需要将 -lCrun 添加到命令。

  • 如果要在缺省标准模式下生成 C 接口库,则在生成该库时应该将 -lCrun 添加到 CC 命令。

如果要删除对 C++ 运行时库的任何依赖性,应该在库源文件中强制应用下列代码规则:

  • 不要使用任何形式的 newdelete,除非提供了自己的相应版本。

  • 不要使用异常。

  • 不要使用运行时类型信息 (RTTI)。