Comments (6)
Are you using JS_NewContext2? It might be that js class "Object" isn't registered. Try to add JS_AddIntrinsicBaseObjects(ctx);
and see if the error persists
from quickjspp.
Shot in the dark, but perhaps its because you arent registering a constructor for that class? Try:
module.class_<Coord>("Coord")
.constructor<your, types, here>();
from quickjspp.
Thanks for the responses. Appreciated.
Ftk, I am not using any of the JS_ methods directly - just calling the quickjspp wrapper code. Where would I call JS_AddIntrinsicBaseObjects?
Sam, my original code had a constructor appended but is throwing the exception before even getting to that :) I removed it for clarity.
Could it be how I have compiled quickjs? I am compiling for x64 on windows, so have used a fork of quickjs for msvc. Are there specific flags I should be compiling with. I just tried this simple example:
qjs::Runtime* runtime = new qjs::Runtime();
qjs::Context* context = new qjs::Context( *runtime );
context->eval( "let a = 127; a--;" );
Which throws the following JS exception (quickjs.c, JS_ThrowError) eval is not supported
from quickjspp.
I have no idea what is happening. All the arguments I am passing in to the quickjs code are being mangled and have different values inside the JS_ methods themselves. It has to be something related to how quickjs.lib was compiled, or how it is linked into my app. Example:
JSRuntime* rtx = JS_NewRuntime();
JSContext* ctx = JS_NewContext( rtx );
string code = "let a = 123; a--;";
JS_Eval( ctx, code.c_str(), code.length(), "<eval>", 0 );
Inside JS_Eval, the last argument, 0, has come through as a huge value (changes every time). In fact the values of all 5 arguments are different every time I run/debug.
from quickjspp.
Are you using quickjs.h from the forked quickjs? Also, depending on compile options sizeof(JSValue) can have different size which results in this strange behavior.
from quickjspp.
ftk, you were right on the money.
I was compiling quickjs with the following flags: JS_STRICT_NAN_BOXING, CONFIG_BIGNUM, CONFIG_JSX, CONFIG_STORAGE
However, I was not defining these same flags in my application before including quickjspp.h.
I have changed it to the following, and now it is working fine:
#define JS_STRICT_NAN_BOXING
#define CONFIG_BIGNUM
#define CONFIG_JSX
#define CONFIG_STORAGE
#include "quickjspp.hpp"
Thanks so much for your help!
from quickjspp.
Related Issues (20)
- How to trigger method overridden in js from c? HOT 4
- Binding a void* property causes wrap/unwrap linkage error HOT 2
- Binding a callback (std::function) causes runtime error HOT 11
- How to implement a variadic (const) compound type for List and Map
- Number of arguments are not checked when calling a function HOT 1
- Support of `make install`...?
- Share Value between contexts HOT 1
- 'this' is undefined when calling static JS class method from C++ HOT 2
- how to resolve "The property "PUBLIC_HEADER" is not allowed"
- Updated MSVC branch HOT 5
- Does QuickJS support multithreading?
- wrap is not a member of qjs::js_traits<MyCustomClass,void> HOT 5
- Simpler way to call js_init_module_os() HOT 2
- JavaScript inheritance from C++ class HOT 1
- How to implement js_traits<std::unique_ptr>? HOT 1
- How do I export all the classes in a module?
- Will this project continue to update?
- MSVC cannot find qjs::rest HOT 1
- Test cases of QuickJS execution failed HOT 2
- std::variant and JS null HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from quickjspp.