مكتبة ملفين منسدلة لتحديد موقع الملف القابل للتنفيذ الحالي والوحدة الحالية على نظام الملفات.
المنصات المدعومة:
ويندوز
لينكس
ماك
دائرة الرقابة الداخلية
أندرويد
كيو إن إكس نيوترينو
فري بي إس دي
نت بي إس دي
دراجون فلاي بي إس دي
SunOS
أوبن بي إس دي
ما عليك سوى إسقاط whereami.h
و whereami.c
في جهازك والبدء. (انظر أيضًا تخصيص التجميع)
wai_getExecutablePath()
يُرجع مسار الملف القابل للتنفيذ
wai_getModulePath()
يُرجع مسار الوحدة المرفقة
مثال على الاستخدام:
المكالمة الأولى int length = wai_getExecutablePath(NULL, 0, NULL);
لاستعادة طول المسار
تخصيص المخزن المؤقت للوجهة path = (char*)malloc(length + 1);
اتصل بـ wai_getExecutablePath(path, length, &dirname_length)
مرة أخرى لاسترداد المسار
إضافة حرف NUL
طرفي مع path[length] = '�';
هنا هو إخراج المثال:
$ make -j -C _gnu-make $ cp ./bin/mac-x86_64/library.dylib /tmp/ $ ./bin/mac-x86_64/executable --load-library=/tmp/library.dylib executable path: /Users/gregory/Projects/whereami/bin/mac-x86_64/executable dirname: /Users/gregory/Projects/whereami/bin/mac-x86_64 basename: executable module path: /Users/gregory/Projects/whereami/bin/mac-x86_64/executable dirname: /Users/gregory/Projects/whereami/bin/mac-x86_64 basename: executable library loaded executable path: /Users/gregory/Projects/whereami/bin/mac-x86_64/executable dirname: /Users/gregory/Projects/whereami/bin/mac-x86_64 basename: executable module path: /private/tmp/library.dylib dirname: /private/tmp basename: library.dylib library unloaded
يمكنك تخصيص سلوك المكتبة عن طريق تحديد وحدات الماكرو التالية:
WAI_FUNCSPEC
WAI_PREFIX
WAI_MALLOC
WAI_REALLOC
WAI_FREE
يوجد حل Visual Studio 2015 في المجلد _win-vs14/
.
يوجد GNU Make 3.81 MakeFile
في المجلد _gnu-make/
:
$ make -j -C _gnu-make/
انظر أعلاه إذا كنت تريد الترجمة من سطر الأوامر. بخلاف ذلك، يوجد مشروع Xcode موجود في المجلد _mac-xcode/
.
يوجد مشروع Xcode في مجلد _ios-xcode/
.
إذا كنت تفضل التجميع من سطر الأوامر والنشر على جهاز مكسور الحماية من خلال SSH، فاستخدم:
$ make -j -C _gnu-make/ binsubdir=ios CC="$(xcrun --sdk iphoneos --find clang) -isysroot $(xcrun --sdk iphoneos --show-sdk-path) -arch armv7 -arch armv7s -arch arm64" postbuild="codesign -s 'iPhone Developer'"
سيتعين عليك تثبيت Android NDK، وتوجيه متغير البيئة $NDK_ROOT
إلى مسار NDK: على سبيل المثال export NDK_ROOT=/opt/android-ndk
(بدون حرف /
لاحقة).
بعد ذلك، الطريقة السهلة هي إنشاء سلسلة أدوات Android مستقلة باستخدام الأمر التالي:
$ $NDK_ROOT/build/tools/make_standalone_toolchain.py --arch=arm64 --api 21 --install-dir=/tmp/android-toolchain
الآن يمكنك تجميع المثال عن طريق تشغيل:
$ make -j -C _gnu-make/ platform=android architecture=arm64 CC=/tmp/android-toolchain/bin/aarch64-linux-android-gcc CXX=/tmp/android-toolchain/bin/aarch64-linux-android-g++
يتم دعم تحميل المكتبة المحاذاة للصفحة مباشرة من ملفات APK. للاختبار استخدم ما يلي:
$ zip -Z store app bin/android/library.so $ zipalign -v -f -p 4 ./app.zip ./app.apk
ثم انسخ bin/android/executable
و app.apk
إلى جهاز Android الخاص بك، ثم قم بتشغيل:
$ ./executable --load-library=$PWD/app.apk!/bin/android/library.so