Não é possível incluir libv8 em um aplicativo c ++

0

Eu estava tentando usar o pacote libv8-3.8.9.20 no meu script c ++. O pacote está instalado em /usr/lib/ como supostamente, mas se eu tentar compilar meu script usando o comando g++ script.cpp -Iv8 , nada acontecerá.

O que deve estar no cabeçalho do script para que eu possa usar a biblioteca? Isso é o que eu tentei:

#include <v8>
#include <libv8>
#include <libv8.so>
#include <v8.so>

Na linha seguinte estava o comando using namespace v8 . Quando faço isso, g++ retorna um erro:

index.cpp:1:20: fatal error: libv8.so: No such file or directory
 #include <libv8.so>
                    ^
compilation terminated.

Ou algo parecido. Eu até tentei compilá-lo sem o cabeçalho mas g++ não gostou.

É possível usar a biblioteca dessa maneira? E como? Obrigado, m93a

EDITAR: Depois de instalar o libv8-dev (ou libv8-3.14-dev , eu tentei os dois), o compilador lança:

index.cpp: In function ‘int main(int, char**)’:
index.cpp:10:35: error: no matching function for call to ‘v8::HandleScope::HandleScope(v8::Isolate*&)’
   HandleScope handle_scope(isolate);
                                   ^
index.cpp:10:35: note: candidates are:
In file included from index.cpp:1:0:
/usr/include/v8.h:473:3: note: v8::HandleScope::HandleScope(const v8::HandleScope&)
   HandleScope(const HandleScope&);
   ^

E assim por diante ... (é muito longo e ainda diz que algo não foi encontrado)
Estou usando o comando g++ main.cpp -lv8 .

    
por m93a 18.11.2013 / 10:48

1 resposta

2

Para usar uma biblioteca em um programa que você está escrevendo (em C / C ++ pelo menos), você precisa não apenas da biblioteca compilada (o arquivo .so - objeto compartilhado ), mas também de um cabeçalho file, que descreve as funções e estruturas de dados usadas pela biblioteca.

Arquivos de cabeçalho geralmente não são instalados por padrão. Eles geralmente são encontrados em um pacote chamado libwhatever-dev , neste caso, libv8-dev , que precisa ser instalado.

Você precisa da linha:

#include <v8.h>

para incluir os cabeçalhos V8. Ao compilar, você também precisará informar ao g ++ para vincular à biblioteca v8 ( -lv8 ). A V8 é uma fera bastante complexa, e provavelmente seria sensato encontrar um exemplo de trabalho ou tutorial para ver como eles compilam.

Finalmente, uma nota sobre terminologia: um script normalmente se refere ao código que é executado diretamente do formulário de texto legível por um interpretador (como python ), enquanto isso tem que ser compilado primeiro antes de poder ser executado.

    
por chronitis 18.11.2013 / 11:13