برای صادر کردن توابع از DLL هنگام استفاده از Microsoft Visual Studio برای کامپایل کردن کتابخانه خود، باید توابع را به عنوان __declspec(dllexport) اعلام کنید. بنابراین، برای نوشتن یک کد منبع که در همه پلتفرمها کار میکند، از الگوی #define زیر استفاده کنید:
#ifdef _MSC_VER
#define EXPORT __declspec(dllexport)
#دیگر
#تعریف صادرات
#endif
EXPORT <return_type> eval(<arguments>) { }
کامپایل و پیوند
برای کامپایل تابع در یک کتابخانه، آن را در یک فایل قرار دهید (در اینجا به عنوان مثال ext.c نامیده می شود) و بسته به پلتفرم به صورت زیر عمل کنید:
برای اطلاعات در مورد نسخه های کامپایلر پشتیبانی شده به https://www.comsol.com/system-requirements مراجعه کنید.
|
•
|
ویندوز 64 بیتی با Microsoft Visual Studio 2017:
|
–
|
Visual Studio 2017>Visual Studio Tools>VC>x64 Native Tools Command Prompt for VS 2017 را از منوی Start ویندوز شروع کنید.
|
–
|
cd به دایرکتوری حاوی ext.c.
|
–
|
cl /MT /c ext.c
|
–
|
پیوند /OUT:ext.dll /DLL ext.obj
|
•
|
لینوکس 64 بیتی با کامپایلر اینتل:
|
–
|
cd به دایرکتوری حاوی ext.c.
|
–
|
icc -fPIC -c ext.c
|
–
|
icc -shared -fPIC -o ext.so ext.o -ldl
|
•
|
macOS 64 بیتی با کامپایلر اینتل:
|
–
|
cd به دایرکتوری حاوی ext.c.
|
–
|
icc -fPIC -c ext.c
|
–
|
icc -dynamiclib -fPIC -o ext.dylib ext.o
|
برای سایر کامپایلرها، برای دستورالعمل های نحوه کامپایل و ایجاد یک کتابخانه مشترک، به مستندات کامپایلر مراجعه کنید.
پیوند با توابع سودمند
برای استفاده از توابع ابزار ارائه شده در تابع متریال خارجی خود، باید به فایل سرصفحه ای که حاوی اعلان های تابع ابزار است ارجاع دهید. خط زیر را به فایل خود اضافه کنید (دوباره به عنوان مثال ext.c نامیده می شود):
#include “csextutils.h”
بسته به پلتفرم به صورت زیر عمل کنید:
•
|
ویندوز 64 بیتی با Microsoft Visual Studio 2017:
|
–
|
Visual Studio 2017>Visual Studio Tools>VC>x64 Native Tools Command Prompt for VS 2017 را از منوی Start ویندوز شروع کنید.
|
–
|
cd به دایرکتوری حاوی ext.c.
|
–
|
cl /MT /c ext.c /IC:\Program Files\COMSOL\COMSOL61\Multiphysics\data\extmat
|
–
|
پیوند /OUT:ext.dll /DLL ext.obj
C:\Program Files\COMSOL\COMSOL61\Multiphysics\data\extmat\win64\csextutils.lib |
•
|
لینوکس 64 بیتی با کامپایلر اینتل:
|
–
|
cd به دایرکتوری حاوی ext.c.
|
–
|
icc -fPIC -c -I/usr/local/comsol61/multiphysics/data/extmat ext.c
|
–
|
icc -shared -fPIC -o ext.so ext.o
-L/usr/local/comsol61/multiphysics/lib/glnxa64 -lcsextutils |
•
|
macOS 64 بیتی با کامپایلر اینتل:
|
–
|
cd به دایرکتوری حاوی ext.c.
|
–
|
icc -fPIC -c -I/Applications/COMSOL61/Multiphysics/data/extmat ext.c
|
–
|
icc -dynamiclib -fPIC -o ext.dylib ext.o
-L/Applications/COMSOL61/Multiphysics/lib/maci64 -lcsextutils |
برای سایر کامپایلرها، برای دستورالعمل های نحوه کامپایل و ایجاد یک کتابخانه مشترک، به مستندات کامپایلر مراجعه کنید.