我在C和C++中尝试了以下代码.file1是ac文件.file2是一个c ++文件,file3是名称magling的头文件.
在file1.c
#include<stdio.h>
#include<stdlib.h>
#include "file3.hpp"
int main(int argc,char **argv)
{
int a[5];
int i;
for(i=0;i<5;i++)
a[i] = i;
printf("%d",a[17]);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
file2.cpp
#include "file3.hpp"
int printtrial(int number)
{
return number;
}
Run Code Online (Sandbox Code Playgroud)
file3.hpp
#ifdef __cplusplus
extern "C"
{
#endif
extern int printtrial(int number);
#ifdef __cplusplus
}
#endif
Run Code Online (Sandbox Code Playgroud)
我使用以下命令编译它:
gcc -c file1.c
g++ -c file2.cpp
gcc -o output file1.o file2.o
Run Code Online (Sandbox Code Playgroud)
在此,它给出了错误:
file2.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
谁能告诉我发生了什么事!