問題タブ [zig]
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.
unix - コンパイラはバージョンを出力しますが、ビルド時にフリーズします
このチュートリアルに従おうとしています。MacOS Catalina 10.15.3 を 13 インチ Macbook pro で 2016 年から実行しています。Mac 用の最新リリースをこちらからダウンロードしました。ファイルを解凍し、zig 実行可能ファイルを移動しました (ただし、残りの内容は移動しません)。フォルダ) を usr/local/bin にコピーして、どこからでも呼び出せるようにしました. これで、どこで実行しても、期待どおりに呼び出しzig version
て出力を取得できます. ただし、次のような0.6.0+352976ed2
ことをしようとすると、フリーズして何もしません.zig run main.zig
zig build main.zig
チュートリアルでは、zig 0.6.0 をサポートしていないと言っています。しかし、私はこれがまだ機能すると想定していました。チュートリアルでは、0.6.0 をサポートしていないと記載されていたときに、印刷方法が変更されるなどのことについて言及していました。明らかに、これは間違った仮定である可能性がありますが、なぜこれがうまくいかないのかわかりません。また、zig はまだ若いため、入門用のチュートリアルが不足しているため、他にどこを見ればよいかわかりません。
以前に自作で動作するように zig 0.6.0 を取得しましたが、コンパイラの実験的なブランチに貢献したり試したりする可能性があるため、任意の zig 実行可能ファイルを実行できるようにしたいと考えています。
zig - C ライブラリを作成する zig
クローズ- エントリの最後を参照してください
zig 言語を使用して C 呼び出し可能なライブラリを作成したいと考えています。Zig のドキュメントにある 2 つの例から始めることにしました。「C ライブラリのエクスポート」および「オブジェクト ファイルの混合」。いずれの場合も、関連する 3 つのファイルを (0.6.0 ドキュメントから) コピーしました。
- test.c という名前の AC ファイル、
- それぞれ mathtest.zig (C ライブラリのエクスポートの例) および base64.zig (オブジェクト ファイルの混合の例) という名前の zig ファイル、および
- build.zig ファイル。
どちらの例もビルドに失敗します。
C ライブラリのエクスポートの例が test.c のコンパイルに失敗し、mathtest.h が見つからないというメッセージが表示される
Mixing Object Files の例では、base64.h が見つからないため、test.c のコンパイルに失敗します。
C ライブラリのエクスポートの例の 3 つのファイルを次に示します。
mathtest.zig
test.c
build.zig
エラーメッセージの一部
私のシステムで名前の付いたファイルが見つからないmathtest.h
ので、test.c ファイルの主張に反して、生成されていないと思います。
何が欠けていますか?感謝して受け入れた助け。
回答とその他の質問
-femit-h
オプションを発見しました:
mathtest.h
ファイルを作成してから
成功します。
build.zig
私はさらに、ファイル内のこれらの行を発見しました
それを保証します
ドキュメントに示されているように、成功し、回答1379が生成されます。
しかし - build.zig ファイルへのこの mod は、mathtest.h
実行後にファイルを残しません。
これが、Zig コードから使用可能な C ライブラリを生成するための最後のハードルのようです。
パズルの最後のピース
追加すると
build.zig
ファイルに。mathtest.h
and (または .so) ファイルはディレクトリlibmathtest.a
に保存されますbuild
。
これを閉じる
segmentation-fault - Zig で X11 C ライブラリを使用するとセグメンテーション違反が発生します
Zig で X11 を使用しようとしています。例としてhttps://rosettacode.org/wiki/Window_creation/X11#Xlibのコードを使用して、この最小限の例を思いつきました:
Zig の最新バージョン (0.6.0) でコンパイル:
実行時に次のエラーが発生します。
unicode - Zig で UTF-16 文字列を出力するにはどうすればよいですか?
UTF-16 文字列構造をコーディングしようとしましたが、標準ライブラリはunicode
モジュールを提供していますが、u16
. 私はこれを試しました:
これは以下を出力します:
[]u16
Unicode 文字列 ( ) を非 Unicode 文字列 ( ) に変換せずに印刷する方法はあり[]u8
ますか?
struct - Zig 0.7.0 の C 関数からの値によって返される構造体へのアクセス
Zig 0.7.0 の linux-x86_64 で @cImport を介して Zig にインポートした C コードを次に示します。Zig で構造体を直接作成するとstruct Point
、期待どおりに機能しますが、getPoint
メソッドから値で構造体を返すと、データが正しくありません (以下の「出力」を参照)。私は何か間違ったことをしていますか、それともこれはバグですか?
- ポイント.h
- point.c
- main.zig
- 出力
- build.zig