编译SpiderMonkey嵌入代码遇链接错误及解决方法
解决SpiderMonkey嵌入代码的JSAPI函数未定义链接错误
问题背景
编译基于SpiderMonkey的C++嵌入代码时,因团队规范要求使用本地requirements/目录下的头文件(而非系统/usr/local路径的库),执行编译命令后触发collect2: error: ld returned 1 exit status链接错误,具体表现为多个JSAPI相关函数提示未定义。尝试过添加多路径头文件引用等操作,均无法解决问题。
有效解决方案
将项目中的boilerplate.cpp文件加入编译命令,执行以下指令即可完成编译:
g++ -I requirements/ test.cpp boilerplate.cpp -o test -DDEBUG=1
问题根源
这类链接错误的核心原因是:编译阶段仅引入了SpiderMonkey的头文件(声明了JSAPI函数),但链接阶段缺少对应函数的实现代码。boilerplate.cpp文件中包含了JSAPI相关函数的必要实现(或是链接所需的代码片段),将其纳入编译流程后,链接器就能找到对应函数的定义,从而消除未定义错误。
内容的提问来源于stack exchange,提问作者IAmStupidSoBePatient
相关产品推荐
相关产品推荐

