저는 C++ 응용 프로그램을 만들고 있습니다. SpiderMonkey를 응용 프로그램에 포함시키고 싶습니다.Embedding SpiderMonkey JS
나는 CMake와 함께 일하고 있지만, 나는 그 빌드를 얻을 수 없었다. 따라서 합병증을 줄이기 위해이 page에 예제 코드를 시도했습니다. 이것은 명령 행에서 cmake 나 gcc를 사용하여 링크하지 않습니다.
그럼에도 불구하고 더 간단하게 말하면, 올바르게 링크 할 수 있도록하기 위해서 나는 다음과 같은 것들을 작동 시키려고 노력하고 있습니다. 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
다음과 같은 최소한의 코드 예제에서 :
#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)
나는 (시도 우분투 16.04 데비안 8.7) 리눅스 일하고을 찾는 것입니다 . 나는 아직 창문에 손댈 필요가 없다.
spidermonkey 빌드에 내장 된 'js'실행 파일이 정상적으로 작동합니다. 내부에 링크하려고하는 lib가 있다고 가정합니다. 그래서 lib 자체가 괜찮다고 생각했을 것입니다.
누구든지이 링커 오류를 해결할 수 있습니까? 이전 버전의 SpiderMonkey에 대한 많은 질문에 대한 답변이 있지만 최신 버전에는 아무 것도 없습니다. 나는 버전 45 (매우 비슷한 오류로 시도했다) 또는 팁 버전 52에 관심이있다. 일단 코드를 작성하면 코드로 원하는 작업을 수행 할 수있는 코드를 충분히 파고있다. 제대로 문서화되지 않은 최신 버전에 대한 관심은 건물 단계와 완전히 뒤죽박죽입니다.
이것은 나를 위해 일했습니다. 그렇게 어리석은 실수라고 믿을 수 없어! 버전 54a1로 실행 파일을 시작하는 데 문제가 있었지만 버전 45와 완벽하게 작동합니다. –