আপনার প্রকল্পে প্রোটোকল বাফারগুলি কীভাবে অন্তর্ভুক্ত করবেন তা প্রদর্শন করার জন্য এখানে একটি দ্রুত উদাহরণ রয়েছে।
এখানে একটি সহজ প্রোটোকল বাফার সংজ্ঞা, geo.proto
:
syntax = "proto2";
message Location {
optional string name = 1;
optional double latitude = 2;
optional double longitude = 3;
}
এবং আমাদের প্রধান জাভা প্রোগ্রাম, Hello.java
:
class Hello {
public static void main(String[] args) {
Geo.Location.Builder locationBuilder = Geo.Location.newBuilder();
locationBuilder.setName("CN Tower");
locationBuilder.setLatitude(43.6412172);
locationBuilder.setLongitude(-79.3884058);
Geo.Location location = locationBuilder.build();
System.out.println(location.toString());
}
}
প্রথম, একটি সামান্য "প্রকল্প" সেটআপ:
export J2OBJC_HOME=~/j2objc # Change to where the j2objc distribution was unzipped.
ls $J2OBJC_HOME/j2objc # Fix above definition until this command works.
mkdir java objc classes # Output directories
পরবর্তী, প্রোটোকল বাফার তৈরি করতে j2objc_protoc
ব্যবহার করুন। --java_out দিয়ে জাভা কোড এবং --java_out
দিয়ে অবজেক্টিভ-সি কোড --j2objc_out
করুন। প্রতিটি পতাকার সাথে নির্দিষ্ট করা মানটি লক্ষ্য ভাষার জন্য আউটপুট ডিরেক্টরি। উভয় আউটপুট ভাষা একই কমান্ডে তৈরি করা যেতে পারে।
$J2OBJC_HOME/j2objc_protoc --java_out=java --j2objc_out=objc geo.proto
ls java Geo.java
ls objc Geo.h Geo.m
জেনারেট করা জাভা প্রোটো ফাইলগুলিকে কম্পাইল করা দরকার যাতে Hello
তাদের রেফারেন্সগুলি সমাধান করা হয়। এটি javac
ব্যবহার করে করা হয় যাতে সেগুলি নিম্নলিখিত ধাপে উদ্দেশ্য সি-তে অনুবাদ করা হয় না।
javac -source 1.8 -target 1.8 -bootclasspath $J2OBJC_HOME/lib/jre_emul.jar -cp $J2OBJC_HOME/lib/protobuf_runtime.jar -d classes java/*.java
ls classes/ Geo$1.class Geo$Location$Builder.class Geo$LocationOrBuilder.class Geo$Location$1.class Geo$Location.class Geo.class
ক্লাসপথে সংকলিত জাভা প্রোটো যোগ করে যথারীতি জাভা উত্সগুলি অনুবাদ করুন।
$J2OBJC_HOME/j2objc -cp classes:$J2OBJC_HOME/lib/protobuf_runtime.jar -d objc Hello.java
ls objc Geo.h Geo.m Hello.h Hello.m
এখন আমাদের কাছে কম্পাইল এবং লিঙ্ক করার জন্য আমাদের সমস্ত উদ্দেশ্য-সি উত্স রয়েছে। protobuf রানটাইম অন্তর্ভুক্ত করার জন্য আপনাকে libprotobuf_runtime.a লাইব্রেরির সাথে লিঙ্ক করতে হবে।
$J2OBJC_HOME/j2objcc -lprotobuf_runtime -o hello objc/*.m
./hello Hello name: "CN Tower" latitude: 43.6412 longitude: -79.3884