問題タブ [c-libraries]
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 - C のバリアント データ型ライブラリ
動的に型付けされた変数 (別名バリアント)を格納および操作するための適切なオープンソース C ライブラリはありますか? 私は主にアトミック値 (int8、int16、int32、uint、string、blob など) に関心がありますが、JSON スタイルの配列とオブジェクト、およびカスタム オブジェクトもいいでしょう。このようなライブラリが役立つ主なケースは、SQL データベースの操作です。
このようなライブラリの最も明白な機能は、サポートされているすべての値の単一の型です。たとえば、次のようになります。
その他の機能には、Variant オブジェクトと C 構造体との変換 (バインディング テーブルを使用)、文字列との間の値の変換、SQLite などの既存のデータベース ライブラリとの統合が含まれます。
注: これがC のジェネリック データ型のライブラリの複製であるとは思えません。、「キュー、ツリー、マップ、リスト」を指します。私が話しているのは、SQL データベースでの作業をインタープリター言語での作業とほぼ同じくらいスムーズにすることに重点を置いています。
android - Android は setjmp/longjmp、access、chdir、getcwd をサポートしていますか?
私はAndroid開発にかなり慣れていないので、AndroidがCにある上記の機能をサポートしているかどうかを知りたい.
前もって感謝します。
c - リンク時に異なるライブラリ/関数を提供する
ライブラリのクローンを作成して、memcpy や memmove などの 1 つの関数だけを変更し、デバッグ/探索目的でライブラリへの実行可能リンクを既に作成している場合、これを行う適切な方法は何ですか?
ライブラリ全体を変更して再コンパイルする必要があると思いますが、これを行う別の方法はありますか?
malloc フックのようなものがあることは理解していますが、これは malloc の特殊なケースのようです。誰かがリソースを持っている場合、valgrind と gdb が別のプログラム内からこれを行う方法の詳細に興味があります。
Mac と Linux のソリューションに興味があります。Linux では、以前に LD_LIBRARY_PATH を使用したことがあります。ライブラリ名を同じにする以外に必要なことはこれだけですか? Macでこれを行うにはどうすればよいですか?
なぜ私がこれをやりたいのか知りたい方のために説明すると、その目的は実験音楽のためです。メモリ操作を音声化するためにこれを行っているため、memcpy/memmove は通常どおり動作しますが、アクセスされたデータはサウンド カードにも送信されます。これを行うには他の方法があることは知っていますが (すでに他の方法をいくつか実行しています)、現在 memcpy/memmove に焦点を当てることに興味があるので、回答をこの焦点に限定していただければ幸いです。
c++ - カスタムargcおよびargvを使用したgetopt_long()関数
カスタムargcおよびargvでgetopt_long()関数を使用するのに問題があります。
実際のコマンドライン引数ではなく、文字列で引数を受け取ります。次に、この文字列からnew_argcとnew_argvが作成され、getopt_long()で使用されます。ただし、getopt_long()は最初の呼び出し自体で失敗します。EOFおよびoptarg=NULLを返します。
コマンドライン引数を渡せば、getopt_longは問題なく動作します。だから私の短いオプションと長いオプションは正しいです。しかし、new_argcとnew_argvを渡すと、失敗します。
私の短いオプションと長いオプションは正しく、argvはNULLで終了していると確信しています。ここにこれ以上コードを投稿できないことをお詫び申し上げます。
getopt_longをカスタムargcおよびargvで使用できるかどうかは疑問です。argc、argvに関連するlibc内の他のコードを参照している必要があるため、実際のargcとargvでのみ機能すると思われます。コメントはありますか?
c - vsnprintf は 1 より大きい大きさの負の値を返すことができますか?
vsnprintf()
1 より大きい負の値を返すことができますか? もしそうなら、それはどのような状況下でそうしますか?
char配列のフォーマット指定子として使用しようとし%ls
ましたが、割り当てられた配列よりも大きくコピーしようとしました。どちらの場合も、戻り値として -1 を取得しています。
c - Cには、文字が文字なのか整数なのかなどをチェックする関数はありますか?
宿題がありますが、教授は、読んだ文字が関数を使って特定の文字かどうかを確認できると思った生徒がいると言いました。彼はそれがstring.hライブラリにあると言いましたが、私はそれをチェックしました、そして私はそれを見ません。誰かが私を正しい方向に向けることができますか?
c++ - WebSocketフレームをエンコードおよびデコードするためのCまたはC++ライブラリ
通常のtcpクライアントからの接続をサポートする独自のソケット実装があります。次に、サーバープログラムにWebSocketサポートを追加したいと思います。その場合、主要なWebブラウザでサポートされているハンドシェイクおよびメッセージフレーミングプロトコルをサポートする必要があります。ハンドシェイクの部分は処理できましたが、メッセージのフレーミングとアンフレーミングの処理に行き詰まりました。WebSocketメッセージフレームのエンコードとデコードを処理し、主要なWebブラウザーで使用される主要なWebSocketプロトコルをサポートする既存のCまたはC ++ライブラリはありますか?
私が見つけた現在の実装のほとんど(つまり、libwebsocket、websocketppなど)は、独自のサーバーとクライアントライブラリを実装しています。つまり、ソケット実装を使用する必要があります。これは私の現在のプログラムで多くのことを変更する必要があり、それは私にとっての選択肢ではないので、私はそれをしたくありません。私が必要としているのは、WebSocketフレームのエンコードとデコードを処理する(および/またはハンドシェイク部分も処理する)単純なライブラリですが、必須ではありません。
objective-c - CでNSDataにファイルをロードする
問題は、画像ファイルを UIImage にロードすることです。ファイルシステムにキャッシュされ、C-libraryによって管理される元のファイル(それについての質問)。
Objective-C を使用すると、次のことができます。
しかし、C を使用してファイル データを Objective-C にロードするにはどうすればよいでしょうか?
CI を使用すると、次のようにファイルを開くことができます。
しかし、ret ptr を使用して NSData を初期化できますか。
助けてくれてありがとう!
python - C ライブラリを使用して Python プログラムでメモリをフラッシュするにはどうすればよいですか?
Python-programs 関数は、ウェブカメラで最も明るい光を見つけ、X、Y 座標を arduino プログラムに送信することです。これはカメラで太陽を追うというもの。
問題は、プログラムがフリーズするまでメモリが増加することです。使用後にすべての変数を削除しようとしました。しかし、それはまだメモリを使いすぎています。
OS: Windows 7
どうすれば漏れを見つけて止めることができますか?
Pythonコードは次のとおりです。
c++ - 共有ライブラリのロード中にエラーが発生しました:libgomp.so.1:、GCCバージョンが間違っていますか?
サードパーティのC++プログラムを実行しているときに、次のエラーが発生します。
共有ライブラリのロード中にエラーが発生しました:libgomp.so.1:共有オブジェクトファイルを開くことができません:そのようなファイルまたはディレクトリはありません
libgomp.so.1ライブラリは、GNUコンパイラコレクションのOpenMPランタイムライブラリです。
これはGCCパッケージの一部ですか?gcc-4.5を使用するシステムでプログラムを実行できますが、gcc-4.3またはgcc-4.6を使用するシステムでは実行できません。
または、別のパッケージをインストールする必要がありますか?
ライブラリをダウンロードしてLD_LIBRARY_PATHに配置することにより、gcc-4.3を使用してシステムでこれを手動で修正しようとしましたが、別のライブラリが見つかりません:/usr/lib/libstdc++.so.6:バージョン `GLIBCXX_3.4.11'見つかった 。libstdcはGNU標準C++ライブラリなので、これもGCCのバージョンが間違っていることを示していますか?
私はC++開発者ではないので、これらのライブラリが何であるか、およびライブラリがC++コードで一般的にどのように機能するかを完全には理解していません。
OSはLinux64ビットです。
gcc-4.3マシン:openSUSE 11.1
gcc-4.5マシン:openSUSE 11.4(このマシンではプログラムが動作します)
gcc-4.6マシン:openSUSE 12.1