c和c ++与库的链接

时间:2012-07-10 02:51:40

标签: c++ c extern linkage

假设我有一个使用类和模板的C ++库lib.h。假设我有一个自定义C ++头文件myLink.h,其中包含以下内容:

#include "lib.h"

  //call methods from lib.h that use templates and classes
  //  and return an integer based off of the information gained from calling functions lib.h  
  extern "C" int foo(int param1, const int param2);

现在假设我在一个名为test.c的C文件中。调用函数foo()是否合法?

//in test.c
int first = foo(5, 6);

此外,编译的目标代码/链接器阶段发生了什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

  

调用函数foo()是否合法?

 int first = foo(5, 6);

是的,这是合法的。虽然您应该阅读以下内容以确保此合法电话会链接。

  

编译的目标代码/链接器阶段发生了什么?

使用类不会干扰。 C ++类将被编译为链接器将理解的目标代码。

根据Chris Dodd的评论编辑:

您的模板也将通过foo调用它们来创建。