JS项目-SpiderMonkey编译说明

来源:互联网 发布:网络剧主题曲好听 编辑:程序博客网 时间:2024/05/01 21:14

https://developer.mozilla.org/en/About_JavaScript

SpiderMonkey编译说明
1.在VC6中导入mdp工程,转换
2.编译
a)直接编译
直接编译会产生如下错误
jsapi.obj : error LNK2001: unresolved external symbol _js_GeneratorClass
jsapi.obj : error LNK2001: unresolved external symbol _js_IteratorClass
jsapi.obj : error LNK2001: unresolved external symbol _js_StopIterationClass
jsapi.obj : error LNK2001: unresolved external symbol _js_InitIteratorClasses
jsobj.obj : error LNK2001: unresolved external symbol _js_InitIteratorClasses
jsgc.obj : error LNK2001: unresolved external symbol _js_CloseGeneratorObject
jsgc.obj : error LNK2001: unresolved external symbol _js_CloseIteratorState
jsinterp.obj : error LNK2001: unresolved external symbol _js_NewGenerator
jsinterp.obj : error LNK2001: unresolved external symbol _js_CloseNativeIterator
jsinterp.obj : error LNK2001: unresolved external symbol _js_CallIteratorNext
jsinterp.obj : error LNK2001: unresolved external symbol _js_ValueToIterator
./Debug/js32.dll : fatal error LNK1120: 10 unresolved externals
NMAKE : fatal error U1077: 'link.exe' : return code '0x460'
b)修正
原因是原始的js.mak文件中并没有编译和链接jsiter模块,需要手工增加,所以做如下修改
---------------79行,增加
-@erase "$(INTDIR)/jsiter.obj"
修改后为
-@erase "$(INTDIR)/jsinterp.obj"
-@erase "$(INTDIR)/jsiter.obj"     // <= 增加的部分
-@erase "$(INTDIR)/jslock.obj"

---------------175行,增加
"$(INTDIR)/jsiter.obj" /
修改后为
"$(INTDIR)/jsinterp.obj" /
"$(INTDIR)/jsiter.obj" /     // <= 增加的部分
"$(INTDIR)/jslock.obj" /

---------------235行,增加
-@erase "$(INTDIR)/jsiter.obj"
修改后为
-@erase "$(INTDIR)/jsinterp.obj"
-@erase "$(INTDIR)/jsiter.obj"     // <= 增加的部分
-@erase "$(INTDIR)/jslock.obj"

---------------333行,增加
"$(INTDIR)/jsiter.obj" /
修改后为
"$(INTDIR)/jsinterp.obj" /
"$(INTDIR)/jsiter.obj" /     // <= 增加的部分
"$(INTDIR)/jslock.obj" /

---------------902行,增加
"./jsiter.h"/
修改后为
"./jsinterp.h"/
"./jsiter.h"/     // <= 增加的部分
"./jslock.h"/

---------------958行,增加
"./jsiter.h"/
修改后为
"./jsinterp.h"/
"./jsiter.h"/     // <= 增加的部分
"./jslock.h"/

c)编译Release版本
在js.mak文件的第7行增加
CFG=jsshell - Win32 Release
修改后为
# TARGTYPE "Win32 (x86) Static Library" 0x0104
CFG=jsshell - Win32 Release     // <= 增加的部分
!IF "$(CFG)" == ""

原创粉丝点击