21xrx.com
2024-12-22 17:54:42 Sunday
登录
文章检索 我的文章 写文章
如何在C++中调用C编译器编译后的函数?
2023-07-01 09:22:04 深夜i     --     --
C++ C编译器 函数调用 编译 链接

在进行C++编程时,有时需要使用已经编译好的C语言函数。这时,就需要在C++中调用C编译器编译后的函数。下面是如何在C++中调用C编译器编译后的函数的步骤。

首先,在C++中调用C编译器编译后的函数需要使用extern "C"来告诉编译器该函数是由C编译器编译后的。这是因为C++编译器和C编译器对函数的命名规则是有所不同的。

接着,在使用C编译器编译函数时,需要将编译器选项加上“-c”,这样就可以生成相应的目标文件了。目标文件的扩展名是“.o”。

然后,在C++源文件中需要包含上一步生成的目标文件的头文件。这样就可以调用其中的函数了。

最后,在使用C++编译器编译整个程序时,需要将生成的目标文件一起编译,这样就可以正常链接了。

为了更好地理解上述步骤,下面给出一个示例:

假设已经有一个由C编译器编译的函数,将其保存在“test.c”文件中,代码如下:


#include <stdio.h>

void print_hello() {

  printf("Hello from C!\n");

}

为了可以在C++中调用这个函数,需要先将其编译为目标文件,使用命令:


gcc -c test.c -o test.o

这将生成一个目标文件“test.o”文件。

接着,在C++源文件中需要包含这个目标文件的头文件:


extern "C" {

  void print_hello();

}

可以看到,在头文件中使用了extern "C"来告诉C++编译器这个函数是由C编译器编译的。

然后,在C++源文件中就可以像使用其他函数一样使用这个函数了:


#include <iostream>

#include "test.h"

int main() {

  std::cout << "Hello from C++!\n";

  print_hello();

  return 0;

}

最后,在编译整个程序时需要将生成的目标文件一起编译:


g++ main.cpp test.o -o app

这就是如何在C++中调用C编译器编译后的函数的步骤。需要注意的是,在使用extern "C"时需要确保函数名的正确性,不然会导致链接错误。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复