내 프로그램에 이미 존재하는 라이브러리를 연결하려고합니다. 내 프로그램은 C++로 작성되었고 라이브러리는 C로 개발되었습니다. 컴파일하고 링크하는 동안 문제가 발생합니다.gcc와 g ++ 코드 연결하기
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);
}
나는
#include "call.hh"
#include<iostream>
using namespace std;
void math_operation::show_addition(int x, int y){
cout<<" sum "<<sum(x, y)<<endl;
}
이제 call.cc 파일에이 기능을 정의, 나는 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) '
어떻게 해결할 수 있습니까?
충돌 오류가 발생했습니다. – Exchhattu
'gcc -c testlib.c -o testlib.o; g ++ main.cc call.cc testlib.o -o main' 작동합니다. – aragaer