問題タブ [jsoncpp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - jsoncpp をリンクして CUDA プロジェクトに含めようとするとエラーが発生する: `Json::Value::Value(Json::ValueType)' への未定義の参照
.cu ファイルに "json/json.h" を #include してから make を実行しようとすると、次のエラーが発生します。
nvcc -o sound main.o process.o -L /usr/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -O3 -arch=sm_20 -Xcompiler -Wall -Xcompiler -Wextra -m64
/usr/local/cuda/bin/crt/link.stub:90:13: 警告: 'void __cudaRegisterLinkedBinary(const __fatBinC_Wrapper_t*, void (*)(void**), void*)' が定義されていますが、使用されていません [-Wunused -関数]
process.o: 関数 `count_tracks()' 内:
tmpxft_00006061_00000000-3_process.cudafe1.cpp:(.text+0x75): 「Json::Value::Value(Json::ValueType)」への未定義の参照
tmpxft_00006061_00000000-3_process.cudafe1.cpp:(.text+0x7d): `Json::Value::~Value()' への未定義の参照 collect2: ld が 1 の終了ステータスを返しました make: *** [student] エラー 1
Json::Value を作成しようとするときを参照してください。私は JsonCpp ライブラリをリンクする場所を移動しようとしましたが、プロジェクトの main.cpp に jsoncpp を含めて Json::Value を作成しても、この問題は発生しませんでした。.cu ファイルでは正しく動作していないようです。
これは、Udacity の CUDA コースから取得し、ニーズに合わせて変更した Makefile からの適切なものです。
json - json-cppでjsonオブジェクトを解析するときに重複キーを識別する方法は?
ファイルから読み取った json オブジェクトを解析しようとしています。json-cppはそれらを好まないため(jsonで違法ではない場合でも)、重複したキーを特定したいと思います。
私が言えるようにする必要があります: エラー: あなたの json ファイルには重複したキーがあり、私たちはそれが好きではありません.
strictMode でリーダーを使用してもうまくいきません。
c++ - jsoncpp: 名前で JSON オブジェクトにアクセスし、変更可能な参照を返し、見つからない場合はオブジェクトを作成しない
jsoncpp を使用して JSON 文字列を操作しています。文字列を Json::Value に解析した後、ネストされたオブジェクトの 1 つにアクセスし、存在する場合は変更する可能性があります。ネストされたオブジェクトが存在しない場合は、作成したくありません。
json のドキュメントを見ると、オブジェクトへの参照を返す唯一の方法は operator[] を使用することです。
名前でオブジェクト値にアクセスし、存在しない場合は null メンバーを作成します。
名前でオブジェクト値にアクセスし、その名前のメンバーが存在しない場合は null を返します。
これらの両方のセマンティクスを組み合わせたものが必要です。変更可能な参照が必要ですが、オブジェクトがまだ存在しない場合は作成する必要はありません。(Json::Value インターフェースがこのように設計されている理由を理解しています。変更可能な参照を返すと、内部の null オブジェクトが公開されます。)
私が見ることができる唯一のきれいな方法は、Json::Value::isMember を使用してオブジェクトが存在するかどうかを判断し、次に Value& operator[] を使用してオブジェクトにアクセスすることです。しかし、これには 1 回ではなく 2 回の O( log N ) ルックアップが含まれるので、避けたいと思うかもしれません。
醜いconst_castを除いて、私が望むことを行う賢明な方法はありますか?
mfc - /clrでjsoncppをコンパイルする方法は?
最近、mfc プロジェクトで jsoncpp を使用していますが、正常に動作しますが、/clr を使用してプロジェクトをコンパイルしようとすると、以下のリンカー エラーが発生します。
1>lib_json.lib(json_writer.obj): エラー LNK2038: 'RuntimeLibrary' の不一致が検出されました: 値 'MT_StaticRelease' は、Brusher.obj の値 'MD_DynamicRelease' と一致しません
1>lib_json.lib(json_value.obj): エラー LNK2038: 'RuntimeLibrary' の不一致が検出されました: 値 'MT_StaticRelease' は、Brusher.obj の値 'MD_DynamicRelease' と一致しません
1>lib_json.lib(json_reader.obj): エラー LNK2038: 'RuntimeLibrary' の不一致が検出されました: 値 'MT_StaticRelease' は、Brusher.obj の値 'MD_DynamicRelease' と一致しません
1>lib_json.lib(json_writer.obj): エラー LNK2001: 未解決の外部シンボル "__int64 const std::_BADOFF" (?_BADOFF@std@@3_JB)
1>lib_json.lib(json_writer.obj): エラー LNK2001: 未解決の外部シンボル "public: static class std::locale::id std::ctype::id" (?id@?$ctype@D@std@@ 2V0locale@2@A)
1>lib_json.lib(json_writer.obj): エラー LNK2001: 未解決の外部シンボル "private: static int std::locale::id::_Id_cnt" (?_Id_cnt@id@locale@std@@0HA)
どうすればこれを修正できますか?
c++ - LinuxでGCCを使用してライブラリを使用してコマンドラインをコンパイルする
私は Android 開発者であり、コンピューター ビジョンのエンジニアです。
Mac で OpenCV を使用し、Xcode で OS X 10.9.5 を使用してコンピューター ビジョンのプロジェクトを作成しています。これはクロスプラットフォームであるため、Linux にコンパイルしてアクセスするためのコマンド ラインです (サーバー)。 .
私が抱えている問題は、ライブラリJSONCPP
が認識されていないことです。私はそれをコンパイルします:
g++ -I/home/ec2-user/project/opencv/include/249include/include/ -L/home/ec2-user/project/opencv/build/lib/ -L/home/ec2-user/project/lib/ -I/home/ec2-user/project/jsoncpp-master/include/ -g -o バイナリ main.cpp 顔認識.cpp utils.cpp -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib - lopencv_legacy -lopencv_stitching -lopencv_flann -w -std=c++11
出力のどの部分ですか:
/home/ec2-user/project/utils.cpp:2475: 「Json::Value::Value(Json::ValueType)」への未定義の参照
/home/ec2-user/project/utils.cpp:2478: 「Json::Value::Value(Json::ValueType)」への未定義の参照
/home/ec2-user/project/utils.cpp:2479: 「Json::Value::Value(Json::ValueType)」への未定義の参照
/home/ec2-user/project/utils.cpp:2484: 「Json::Value::Value(int)」への未定義の参照
/home/ec2-user/project/utils.cpp:2484: 「Json::Value::append(Json::Value const&)」への未定義の参照
/home/ec2-user/project/utils.cpp:2484: `Json::Value::~Value()' への未定義の参照
/home/ec2-user/project/utils.cpp:2486: 「Json::Value::Value(std::string const&)」への未定義の参照
/home/ec2-user/project/utils.cpp:2486: `Json::Value::operator[](char const*)' への未定義の参照
/home/ec2-user/project/utils.cpp:2486: 「Json::Value::operator=(Json::Value)」への未定義の参照
/home/ec2-user/project/utils.cpp:2486: `Json::Value::~Value()' への未定義の参照
/home/ec2-user/project/utils.cpp:2487: 「Json::Value::Value(Json::Value const&)」への未定義の参照
/home/ec2-user/project/utils.cpp:2487: `Json::Value::operator[](char const*)' への未定義の参照
/home/ec2-user/project/utils.cpp:2487: 「Json::Value::operator=(Json::Value)」への未定義の参照
/home/ec2-user/project/utils.cpp:2487: `Json::Value::~Value()' への未定義の参照
/home/ec2-user/project/utils.cpp:2488: `Json::Value::append(Json::Value const&)' への未定義の参照
/home/ec2-user/project/utils.cpp:2479: `Json::Value::~Value()' への未定義の参照
/home/ec2-user/project/utils.cpp:2489: `Json::Value::~Value()' への未定義の参照
/home/ec2-user/project/utils.cpp:2491: `Json::StyledWriter::StyledWriter()' への未定義の参照
/home/ec2-user/project/utils.cpp:2492: `Json::StyledWriter::write(Json::Value const&)' への未定義の参照
/home/ec2-user/project/utils.cpp:2475: `Json::Value::~Value()' への未定義の参照
/home/ec2-user/project/utils.cpp:2484: `Json::Value::~Value()' への未定義の参照
/home/ec2-user/project/utils.cpp:2486: `Json::Value::~Value()' への未定義の参照
/home/ec2-user/project/utils.cpp:2487: `Json::Value::~Value()' への未定義の参照
/home/ec2-user/project/utils.cpp:2479: `Json::Value::~Value()' への未定義の参照
このMakefileを使用して、以前にAndroid(NDK)用にこれをコンパイルしたことに言及する必要があります。
LOCAL_PATH := $(my-dir を呼び出す)
$(CLEAR_VARS) を含める
OPENCV_CAMERA_MODULES:=オフ
OPENCV_INSTALL_MODULES:=オン
$(LOCAL_PATH)/jsoncpp/Android.mk を含める
/Users/rafaelruizmunoz/Desktop/AndroidDevelopment/OpenCV-2.4.9-android-sdk/sdk/native/jni/OpenCV.mk を含めます
OPENCV_LIB_TYPE:=共有
LOCAL_C_INCLUDES += $(LOCAL_PATH)
LOCAL_C_INCLUDES += /Users/rafaelruizmunoz/OpenCVtry/
LOCAL_C_INCLUDES += /Users/rafaelruizmunoz/Desktop/RD/OpenCVtry/Libraries/jsoncpp-master/include
LOCAL_PATH := jni
LOCAL_ALLOW_UNDEFINED_SYMBOLS:= 真
LOCAL_MODULE := libXYZ
LOCAL_MODULE_NAME := mylibXYZ
LOCAL_SRC_FILES := 顔認識.cpp androidClass.cpp main.cpp utils.cpp helper.cpp lbp.cpp
LOCAL_LDLIBS += -llog -ldl
LOCAL_CPPFLAGS := -std=c++11
LOCAL_CFLAGS := -w
CFLAGS=-w -g -Wall -Wextra -std=c++11 -Wno-write-strings ../../include/boost
LOCAL_SHARED_LIBRARIES := libJsoncpp libopencv_java
$(BUILD_SHARED_LIBRARY) を含める
これは完璧に機能しました。
私のMacでは、完全にコンパイルされます。私がしなければならなかったのは、Xcode ジェネレーターを使用し、プロジェクトとして追加する JSONCPP Makefile です。
しかし、それを Linux にコンパイルする手がかりが得られません。
あなたは何をすべきか知っていますか?前もって感謝します。
よろしく。
c++ - jsoncpp operator= での未定義の参照
次のリンカ エラー wrt jsoncpp operator= を解決するにはどうすればよいですか。
Json::Value
このようなオブジェクトを作成します
これにより、Ubuntu 14.04 に同梱されているデフォルトの libjsoncpp-dev に対してリンクしようとすると、次のリンカー エラーが発生します。
「Json::Value::operator=(Json::Value)」への未定義の参照
追加情報:
また、GitHub の最新の jsoncpp に対してコンパイルおよびリンクすると、このリンカー エラーは発生しません。
/usr/include/jsoncpp/json の value.h (ubuntu apt でインストール) には
最新の jsoncpp value.h には