This question already has answers here:
Using C++ library in C code
(4个答案)
6年前关闭。
我有以下设置:
main.c:
sol.cc:
我编译为单独的目标文件:
但是当我尝试将它们链接到单个可执行文件时,
我得到:
(4个答案)
6年前关闭。
我有以下设置:
main.c:
extern void sol();
int main(){
sol();
}
sol.cc:
#include<iostream>
using namespace std;
void sol(){
cout<<"HW!!\n";
}
我编译为单独的目标文件:
$gcc main.c -c
$g++ sol.cc -c
但是当我尝试将它们链接到单个可执行文件时,
$g++ main.o sol.o
我得到:
main.c:(.text+0x7): undefined reference to 'sol'
,nm sol.o
表明存在00000000 T _Z3solv
,而nm main.o
需要U sol
。我发现C++重命名函数是为了避免重载函数使用相同的名称。有什么办法告诉编译器sol.o
包含重命名的函数,或者在不重命名它们的情况下编译sol.cc
? 最佳答案
extern "C" void sol()
{
cout<<"HW!!\n";
}
关于c++ - 链接C和C++目标文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21913049/
10-10 16:36