برای استفاده از کتابخانه در برنامه خود، باید آن را از یک متد یا کلاس ابزار فراخوانی کنید. از متد External external (String libraryTag) موجود در کلاس ApplicationMethod یا کلاس ApplicationLanguageBase برای برگرداندن یک شی از نوع External با متدهای زیر استفاده کنید.
که تابع C را به صورت int stringLength(char *str) اعلان می کند. همچنین می توانید از کد زیر استفاده کنید:
که یک تابع C را به عنوان int sum (int a, int b) فرض می کند. اگر بخواهید چندین تماس با یک کتابخانه داشته باشید، دستور دوم کارآمدتر است.
متدها می توانند حداکثر شش آرگومان داشته باشند و ممکن است (به صورت اختیاری) یک مقدار صحیح (یا اشاره گر بومی) را برگردانند که یک مقدار 64 بیتی در پلتفرم های 64 بیتی است. در جاوا، مقدار بازگشتی همیشه طولانی است.
همه انواع آرگومان ها پشتیبانی نمی شوند و برخی محدودیت ها اعمال می شود. به طور خاص، آرگومان های شناور به آرگومان های دوگانه تبدیل می شوند. تابع اصلی نباید با آرگومان های شناور اعلان شود. اگر نیاز به انتقال داده از نوع شناور دارید، می توانید به جای آن از یک آرایه شناور استفاده کنید که پشتیبانی می شود.
برای انواع آرایه، تابع خارجی می تواند مقادیر موجود در آرایه ارائه شده را تغییر دهد. مقادیر به روز شده به برنامه جاوا منتقل می شوند. توجه داشته باشید که امکان تغییر اندازه آرایه منتقل شده توسط گیرنده وجود ندارد. تماس گیرنده و تماس گیرنده مسئول انتقال اندازه، با استفاده از یک استدلال اضافی یا یک قرارداد هستند. اگر تماس گیرنده حافظه را خارج از بافر اختصاص داده شده بنویسد یا بخواند، رفتار برنامه تعریف نشده است اما ممکن است شامل یک خروج ناگهانی از برنامه باشد. توجه داشته باشید که برای انواع آرایه دوگانه، فقط مقادیر ممکن است اصلاح شوند، نه هر اشاره گر.
برای آرگومانهای نوع String[] ، برنامه میتواند یک اشارهگر را در آرایه اشارهگرها تغییر دهد تا به رشتهای با پایان تهی جدید اشاره کند که به جاوا بازگردانده میشود. حداکثر طول مجاز یک رشته 65535 کاراکتر است. از یک آرایه بایت برای انتقال حجم بیشتری از داده ها استفاده کنید. با تنظیم عنصر مربوطه در آرایه رشتهای بر روی 0 ، میتوان مقدار null را به جاوا برگرداند .
انواع پیچیدهتر باید در سمت جاوا به یک آرایه بایت سریالی شوند، که میتواند توسط callee از حالت سریال خارج شود.
تابع خارجی می تواند یک عدد صحیح ( int ) یا یک اشاره گر را به یک شی داخلی ( void * ) برگرداند. در جاوا، این مقدار به عنوان یک مقدار طولانی بازگردانده می شود، که به اندازه کافی گسترده است تا یک آدرس حافظه 64 بیتی را نگه دارد. اگر به یک رشته یا دو به عنوان مقدار بازگشتی نیاز دارید، در عوض باید یک آرایه با طول یک و نوع مناسب را ارسال کنید، که می تواند توسط تابع خارجی پر شود.
ممکن است هنگام کار با برنامهها، از یک دیباگر کد بومی (مانند Microsoft® Visual Studio®) استفاده کنید . ابتدا باید کتابخانه را با نمادهای اشکال زدایی بسازید. سپس، این کتابخانه را به برنامه وارد کنید و دیباگر را به فرآیند COMSOL Multiphysics متصل کنید. یک نقطه شکست در تابع اصلی که می خواهید اشکال زدایی کنید قرار دهید. برنامه را در COMSOL Multiphysics اجرا یا آزمایش کنید. هنگامی که نرم افزار کتابخانه خارجی را بارگیری می کند، دیباگر باید بتواند کد منبعی را که نقطه شکست خود را در آن قرار داده اید با کتابخانه بارگذاری شده مطابقت دهد و هنگام فراخوانی تابع شکسته شود. برای جزئیات بیشتر به مستندات سیستم اشکال زدایی بومی خود مراجعه کنید.
•
|
•
|
کد منبع زیر یک تابع خارجی بی اهمیت نوشته شده در C++ را تعریف می کند که می خواهید آن را فراخوانی کنید. دستور #ifdef برای سازگاری کد منبع بین پلتفرم در نظر گرفته شده است، اما نوشتن یک کتابخانه مشترک معمولاً شامل تنظیمات خاص کامپایلر است، بنابراین ممکن است لازم باشد مستندات کامپایلر خود را بررسی کنید. فایل هدر، test.h ، به شرح زیر است:
اگر از یک محیط ساخت گرافیکی ++C مانند Microsoft Visual Studio استفاده می کنید، احتمالاً ساده ترین کار است که کد بالا را در یک پروژه DLL وارد کنید.
یک گره خارجی C Library با برچسب native1 اضافه کنید و کتابخانه ایجاد شده در مرحله 1 را برای پلتفرم مناسب وارد کنید.
یک دکمه به فرم اضافه کنید و روش اضافه شده در بالا را به عنوان دستور اجرا انتخاب کنید. اگر برنامه را روی همان پلتفرمی میسازید که کتابخانه برای آن ساخته شده است، میتوانید روی Test Application کلیک کنید تا روش را آزمایش کنید. در غیر این صورت، برنامه را ذخیره کرده و در یک جلسه COMSOL Multiphysics روی پلتفرم صحیح اجرا کنید. در هر صورت، هنگامی که دکمه را در پنجره برنامه فشار می دهید، باید گفتگویی را مشاهده کنید که یک حقیقت را بیان می کند.