Hello I am new to C++ and have been building an addon for one of my programs using node-gyp. However, when I try to build the addon I run into this error:
watercpp.obj : error LNK2001: unresolved external symbol "class std::basic_istr
eam<char,struct std::char_traits<char> > & __cdecl Json::operator>>(class std::
basic_istream<char,struct std::char_traits<char> > &,class Json::Value &)" (??5
Json@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@std@@AEAV12@AEAVValue@0@@Z)
I believe it has to do with reference errors accessing info from a JSON. This is what my code looks like:
#include "node.h"
#include "node_buffer.h"
#include "v8.h"
#include <value.h>
#include <fstream>
#include <iostream>
#include <string>
#include <json/json.h>
#include <vector>
using namespace v8;
using namespace std;
namespace water{
using v8::FunctionCallbackInfo;
using v8::Isolate;
using v8::Local;
using v8::Object;
using v8::String;
using v8::Number;
using v8::Value;
using v8::Array;
void water(const FunctionCallbackInfo<Value> &args)
{
Json::Value waterjson;
std::ifstream people_file("waterjson.json", std::ifstream::binary);
people_file >> waterjson;
Local<Array> a;
Local<Array> b;
if(args[0]->IsArray())
{
a = args[0].As<Array>();
b = args[1].As<Array>();
}
int total=0;
for(std::size_t i=0; i<a->Length(); i++)
{
v8::Isolate* isolate = args.GetIsolate();
v8::String::Utf8Value atr(isolate, a->Get(i));
std::string cppStr(*atr);
int c = waterjson[cppStr]["content"].asInt();
int s = waterjson[cppStr]["serving"].asInt();
int m = s/100;
int amount = c*m;
v8::String::Utf8Value btr(isolate, b->Get(i));
std::string cppNum(*btr);
int num = stoi(cppNum);
total+=(amount*num);
}
args.GetReturnValue().Set(total);
}
void Initialize(Local<Object> exports)
{
NODE_SET_METHOD(exports, "water", water);
}
NODE_MODULE(NODE_GYP_MODULE_NAME, Initialize)
}
I am not sure on what to do as I've never seen an error like this before and there is little documentation online on how to deal with it. Thank you!
This is my binding.gyp:
{
"targets":[
{
"target_name": "water",
"sources": ["watercpp.cpp"],
"include_dirs": [
"./vcpkg/installed/x86-windows/include",
"./vcpkg/buildtrees/jsoncpp/src/1.9.2-d01d7f5c9b.clean/include/json",
],
"library_dirs":[
"./vcpkg/buildtrees/jsoncpp/x86-windows-dbg/src/lib_json",
"./vcpkg/installed/x86-windows/lib", "./vcpkg/packages/jsoncpp_x86-windows/lib",
],
"libraries":[
"-ljsoncpp.lib", "<(module_root_dir)/vcpkg/buildtrees/jsoncpp/x86-windows-dbg/src/lib_json",
"<(module_root_dir)/vcpkg/installed/x86-windows/lib", "<(module_root_dir)/vcpkg/packages/jsoncpp_x86-windows/lib",
],
},
]
}