我正在尝试在我的程序中链接已经存在的库。我的程序是用 C++ 编写的,库是用 C 开发的。现在,我在编译和链接时遇到了这个问题。
我关注了这个论坛的许多帖子,这些帖子与将 gcc 库与 g++ 源链接有关。不知何故,我可以解决一些问题。现在,我面临一个问题。这是我的问题的详细信息。
在 testlib.h 文件中
int sum(int x, int y)
In testlib.c file
int sum(int x, int y) {
return x + y;
}
我创建了这些文件的静态库。
我的下一步是在 g++ 源代码中使用这个函数。
在 call.hh 文件中,
#include<iostream>
#include "testlib.h"
using namespace std;
extern "C" {
int sum(int x, int y);
}
namespace math_operation {
void show_addition(int x, int y);
}
我在 call.cc 文件中定义了这个函数
#include "call.hh"
#include<iostream>
using namespace std;
void math_operation::show_addition(int x, int y){
cout<<" sum "<<sum(x, y)<<endl;
}
现在,我在 main.cc 中调用这个函数
#include "call.hh"
using namespace math_operation;
int main() {
int x = 10;
int y = 15;
show_addition(x, y);
return 0;
}
我有两个问题:首先,它给出了编译错误,因为我已经两次声明了函数 int sum(int, int)。但是,如果我没有在 call.hh 中声明 extern "C" { int sum(int, int) },编译问题就解决了,并且链接器问题产生了以下错误:未定义对 `sum(int, int)' 的引用
我该如何解决?