커스텀 vapi 파일을 만들고 싶습니다만, 저는 기본적인 것들을 가지고 있습니다. 그러나 나는 분명히 뭔가를 놓쳤습니다. 내 주요 목표는 libtorrent을 사용하여 torent 앱을 만들고 vala 및 gtk로 GUI (프론트 엔드?)를 만드는 것입니다.vapi 파일을 만들고 사용하는 방법은 무엇입니까?
#ifndef WHATEVER_H_INCLUDED
#define WHATEVER_H_INCLUDED
int add(int a, int b);
#endif
c_functions.c :
#include <stdio.h>
#include <stdlib.h>
#include "c_func_head.h"
int add(int a, int b){
printf("Adding numbers in c...\n");
return a+b;
}
vala_p.vapi :
[CCode (cheader_filename = "c_func_head.h")]
namespace MyFunc {
[CCode (cname = "add")]
public int add (int a, int b);
}
마지막 vala_program.vala :
//extern int add(int a, int b);
using MyFunc;
void main(){
stdout.printf("Calling a c function...\n");
//stdout.printf("The sum is: %d\n", add2number(2, 2));
int sum = add(2, 2);
stdout.printf("The sum is: %d\n", sum);
}
나는 c_func_head.h이
extern을 사용해도 알 수 있듯이, extern을 사용했지만 vapi 파일을 사용하고 싶습니다.
valac vala_program.vala --vapidir = vala_p.vapi -o mustrun
과 오류는 다음과 같습니다 : 컴파일
I (다 같은 폴더에)
MyFunc를 사용하여 네임 스페이스 이름 'MyFunc'을 (를) 찾을 수 없습니다.
한 가지 더. libtorrent에 대한 바인딩을 만들 수 있습니까? 그것은 C + +를 사용하고 나는 C++도 사용해야한다고 생각합니다.
처음 컴파일 할 때 '추가'기능에 대한 정의되지 않은 참조가 있습니다. 두 번째 방법은 "c_func_head.h"파일을 찾을 수 없다는 의미입니다. (나는 .o 파일을 만들었지 만 행운은 없다.) – Levi
처음에는 여전히 C 코드를 제공해야한다. 포함될 원시 소스라면'valac vala_program.vala vala_p.vapi c_functions.c'을 할 수 있습니다. 그렇지 않다면'-X'를 사용하여 C 컴파일러에 올바른 인자를 부여하여 코드와 링크하십시오. 두 번째로, C 컴파일러는 헤더를 검색 할 위치를 모른다. '-X -I.'를 사용하여 현재 디렉토리를 포함 시키십시오. – apmasell
감사합니다. – Levi