PDA

View Full Version : مشکل در ساخت Dll از یک Header



littledemon
یک شنبه 22 شهریور 1388, 19:04 عصر
با سلام بر کلهم اجمعین :لبخند:
یه مشکلی برام پیش اومد در ساخت dll در c++
میشه گفت در واقع سواله ...نمیدونستم کجا بپرسم
من یه فایل هدر دارم که توش یه سری متد هست ولی خالیه ...کد داخل متد ها نیست !
از 4-5 تا فایل lib هم استفاده کرده این هدر...حالا من میخوام اینو تبدیل به یه dll کنم ولی نمیدونم چطور و ایا کار ارجاع و استفاده از lib ها رو تو dll باید خودم اعمال کنم یا نه ...
به طور کلی چیز خاصی از ساخت dll در c++ نمیدونم...

ممنون میشم یه ادرسی بدید یا راهنمایی کنید.:لبخندساده:

بدرود

pswin.pooya
دوشنبه 23 شهریور 1388, 14:08 عصر
خوب این کار خیلی راحت هستش.
یه پروژه dll ایجاد میکنی و فایل هدرت رو میسازی و کدهای توابع هدر رو داخل فایل cpp قرار میدی. فقط باید به یک نکته دقت کنی که قبل از اسم توابع و کلاسها باید از کلمه کلیدی زیر استفاده کنی:

برای MSVC:

__declspec( dllexport )

برای gcc:

__attribute__ ((visibility("default")))

البته اگر بخوای راحتر باشی و مشکل کراس پلتفری نداشته باشی میتونی اون رو به صورت یک define تعریف کنی. مثلا:


#define MY_API __declspec( dllexport )

و دست آخر هم به صورت زیر هدرها رو مینویسی:

class MY_API myclass
{
....
};

خوب حالا اگر کدت رو کامپایل کنی. به اسم پروژت یک dll و یک فایل lib تولید میشه. اونها رو توس مسیر پروژه ای که میخوای ازش استفاده کنی کپیش کن. برای استفاده از dll کافیه هدر فایل اون و کتابخانه lib اون رو توی پروژت اضافه کنی.

در مورد استفاده از فایلهای lib یا باید از setting پروژه استفاده کنی و یا اینکه اونها رو به صورت مستقیم داخل کد واردشون کنی:

برای MSVC:

#pragma comment(lib,"mydll.lib")

کد بالا رو توی فایلهای cpp قرار بده. این فایل Lib بعد از کامپایل برنامت لازم نیستش و لازم نیست که اون همراه فایل exe باشه و تنها فایل dll کافیه.

khatarat
چهارشنبه 25 شهریور 1388, 12:14 عصر
حالا اگر هدر فایلمون precompiled header باشه چی؟
یعنی ما فقط تعریف توابع رو می بینیم و کدهای توابع در دسترس نیستند این کارایی که گفتید ارر می دن

pswin.pooya
چهارشنبه 25 شهریور 1388, 14:11 عصر
در ابتدا یک پروژه خالی ایجاد کنید و ...