"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > ज़िग! क्या आप सी कर सकते हैं?

ज़िग! क्या आप सी कर सकते हैं?

2024-08-05 को प्रकाशित
ब्राउज़ करें:735

Zig! Can you C?

मैं बस कुछ अलग विकसित करना चाहता हूं। क्या पर? गेम, ग्राफ़िक्स, ध्वनि प्रसंस्करण?
निश्चित रूप से आप कहेंगे जंग! हाँ, रस्ट में बहुत सारी चीज़ें कीं। लेकिन शायद सी?

ओह...नहीं...
विभाजन दोष याद है?
आप निर्भरता का प्रबंधन कैसे करेंगे?

ठीक है, तो ZIG में कुछ C लाइब्रेरी का उपयोग करने का प्रयास करें! यह कितना कठिन होगा? चलो देखते हैं।

रेलिब का उपयोग करके कुछ सरल ऐप लिखने का प्रयास करें।

$ mkdir ray_test_zig
$ cd ray_test_zig
$ zig init-exe

एक प्रोजेक्ट मिला। चलाने का प्रयास करें?

$ zig build run

हां यह काम कर रहा है।
हमें किसी तरह raylib लाने और शामिल करने की आवश्यकता है।

ज़िग निर्भरता लाने के लिए ज़ोन का उपयोग करता है। क्या यह सी पुस्तकालयों के साथ काम करता है? पता लगाना!

हमें यह बताना होगा कि परिवाद कहां है! यह रहा:

build.zig.zon फ़ाइल बनाएं।

.{
    .name = "ray_test_zig",
    .version = "0.0.1",

    .dependencies = .{
        .raylib = .{
            .url = "https://github.com/raysan5/raylib/archive/refs/tags/5.0.tar.gz",
        },
    },
}

परियोजना बनाने का प्रयास करें?

$ zig build

यह क्या है?

Fetch Packages... raylib... ./ray_test_zig/build.zig.zon:7:20: error: url field is missing corresponding hash field
.url = "https://github.com/raysan5/raylib/archive/refs/tags/5.0.tar.gz",
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
note: expected .hash = "1220c28847ca8e8756734ae84355802b764c9d9cf4de057dbc6fc2b15c56e726f27b",

ठीक है, ज़ोन को हैश की उम्मीद है, अगर कोई कंप्यूटर को हैक करने की कोशिश करेगा। फिर एक बार:

.{
    .name = "ray_test_zig",
    .version = "0.0.1",

    .dependencies = .{
        .raylib = .{
            .url = "https://github.com/raysan5/raylib/archive/refs/tags/5.0.tar.gz",
            .hash = "1220c28847ca8e8756734ae84355802b764c9d9cf4de057dbc6fc2b15c56e726f27b",
        },
    },
}

एक बार फिर प्रयास करें:

$ zig build

यह काम करता है! वाह! इतना ही?

नहीं! हमें ज़िग को निर्माण के दौरान रेलिब को शामिल करने के लिए कहना होगा!

अब हम build.zig संपादित करेंगे। पंक्ति ~30 के ठीक ऊपर हमारे पास b.installArtifact(exe);
है उस पंक्ति से पहले हमें जोड़ना होगा:

const raylib = b.dependency("raylib", .{
    .target = target,
    .optimize = optimize,
});

exe.installLibraryHeaders(raylib.artifact("raylib"));
exe.linkLibrary(raylib.artifact("raylib"));

हम ज़िग को बता रहे हैं कि हेडर फ़ाइलें कहां हैं और निष्पादन योग्य को रेलिब के साथ लिंक करना है।
क्या यह काम करता है? की जाँच करें!

$ zig build

हे भगवान! ऐसा लगता है कि रायलिब के साथ कुछ हुआ था। यह संकलित है?
आइए एक सरल उदाहरण को raylib से zig में पोर्ट करें।

src/main.zig में:

const std = @import("std");

const ray = @cImport({
    @cInclude("raylib.h");
});

pub fn main() !void {
    ray.InitWindow(800, 450, "Hey ZIG");
    defer ray.CloseWindow();

    while (!ray.WindowShouldClose()) {
        ray.BeginDrawing();
        ray.ClearBackground(ray.RAYWHITE);
        ray.DrawText("Congrats! You created your first window!", 190, 200, 20, ray.LIGHTGRAY);
        ray.EndDrawing();
    }
}
$ zig build

त्रुटियाँ नहीं? महान!

$ zig build run

हमें रेलिब विंडो मिली!
जैसा कि आप देख सकते हैं! कोड की बस एक लाइन और रेलिब नेटिव लिब की तरह काम कर रहा है!

हां! जिग कैन सी!

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/fazibear/zig-can-you-c-3adl यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए [email protected] से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3