2017-02-11 14 views
1

私はC++アプリケーションを開発中です。私はSpiderMonkeyをアプリケーションに組み込みたいと思っています。SpiderMonkey JSを埋め込む

私はCMakeと一緒に働いていますが、私はそのビルドを手に入れることができませんでした。したがって、合併症を減らすために、私はこのpageのサンプルコードを試しました。これはコマンドラインからcmakeまたはgccを使ってリンクしません。

したがって、私が正しくリンクできるようにするために、私は以下のことを実行しようとしています。以下の最小限のコード例で

g++ --std=c++11 
    -I/home/thetasinner/moz/js/src/build_DBG.OBJ/dist/include  
    -L/home/thetasinner/moz/js/src/build_DBG.OBJ/js/src -DDEBUG 
    -Wl,--verbose -lmozjs-54a1 -lm -lz -ldl test.cpp -o test 

:GCCを使用して、コマンドラインから

#include <iostream> 
#include <stdexcept> 
#include "jsapi.h" 
#include "js/Initialization.h" 

int main(int argc, char** args) { 
    if (!JS_Init()) { 
    throw std::runtime_error("failed to initialise."); 
    } 

    std::cout << "It's alive!\n"; 

    JS_ShutDown(); 
    return 0; 
} 

でも、これはリンクしません。私はエラーが

/tmp/ccqjx5RY.o: In function `main': 
    custom.cpp:(.text+0xf2): undefined reference to `JS_ShutDown()' 
/tmp/ccqjx5RY.o: In function `JS_Init()': 
    custom.cpp:(.text._Z7JS_Initv[_Z7JS_Initv]+0xa): undefined reference to 
     'JS::detail::InitWithFailureDiagnostic(bool)' 
collect2: error: ld returned 1 exit status 

ヘッダが検出された取得し、ビルドツールがどこにあることだから、リンカはmozjsライブラリ

attempt to open /home/thetasinner/moz/js/src/custom_build_DBG.OBJ/js/src 
    /libmozjs-54a1.so succeeded 
-lmozjs-54a1 (/home/thetasinner/moz/js/src/custom_build_DBG.OBJ/js/src 
    /libmozjs-54a1.so) 

私は(試みたUbuntuの16.04とDebian 8.7)Linux上で働いているを見つけることです。私はまだウィンドウズに触れたくない。

spidermonkeyビルドでビルドされた 'js'実行可能ファイルは正常に動作します。これは、内部にリンクしようとしているライブラリがあると想定しています。だから、私はlib自体が大丈夫だと思ったでしょう。

これらのリンカーエラーを解決するのにお手伝いできますか?もっと古いバージョンのSpiderMonkeyに関する質問には多くの回答がありますが、最近のバージョンでは何もありません。私はバージョン45(これは非常に似たエラーで試しました)やヒントバージョン52に興味があります。 一度ビルドすれば、私が望むやり方で作業するコードを十分に掘り下げて快適です適切に文書化されていない最新のバージョンへの関心は、私はビルドステップに完全に困惑しています。

答えて

1

は、私はそれだけで、コマンドライン上の順序問題だ疑い:

g++ --std=c++11 
-I/home/thetasinner/moz/js/src/build_DBG.OBJ/dist/include  
-L/home/thetasinner/moz/js/src/build_DBG.OBJ/js/src -DDEBUG 
test.cpp -o test 
-Wl,--verbose -lmozjs-54a1 -lm -lz -ldl 

コンパイルまず、依存関係の順にライブラリと、リンクが続きます。 (私が最初に推測したのは、コマンドラインでmozjに言及することを怠っていたことです。間違った場所にあることを二度と見ていませんでした)。

+0

これは私に役立ちました。そんなに愚かな間違いだとは信じられない!バージョン54a1で実行可能ファイルを起動する際に問題がありましたが、バージョン45で完全に動作します –

関連する問題