PDA

View Full Version : سوال: فايل هاي باينري



mkhsoft
پنج شنبه 26 اردیبهشت 1387, 10:27 صبح
سلام ،
مي خواستم بدونم چگونه در سي پلاس پلاس مي شه يك كلاس رو در يك فايل باينري ذخيره كرد.
من هيچي از فايل ها در سي پلاس پلاس نمي دونم.
توي فروم خيلي جستوجو كردم ولي چيزي نبود.
حتي اگه يه فايل pdf هم درمورد آموزش كار با فايل ها در c++ به من بديد كافيه.

ممنون

amir_civil
پنج شنبه 26 اردیبهشت 1387, 11:14 صبح
با سلام

مي خواستم بدونم چگونه در سي پلاس پلاس مي شه يك كلاس رو در يك فايل باينري ذخيره كرد.

من متوجه منظورتون نشدم ولی برای کار با فایلها از کلاسهای زیر میتونید استفده کنید


fstream
istream

PC2st
پنج شنبه 26 اردیبهشت 1387, 18:16 عصر
مي خواستم بدونم چگونه در سي پلاس پلاس مي شه يك كلاس رو در يك فايل باينري ذخيره كرد.
اگه منظورتون اینه که بتونین یک کلاس رو توی DLL کامپایل کنین و بعدش از طریق کد بشه به کلاسهای موجود در اون DLL از خارج (یعنی از طریق برنامه دیگه ای) دسترسی داشت، میشه این کار رو کرد، ولی در اینصورت اون DLL فقط توسط زبان برنامه نویسی C++ قابل استفاده است و مثلا دیگه VB یا C#.NET یا C و سایر زبانها به اون کلاسها نمیتونن دسترسی داشته باشند.
برای این منظور، یک پروژه از نوع DLL یا Dynamic Link Library ایجاد کرده و برای اون کلاسی که میخواید از خارج از DLL بهش دسترسی داشته باشید (منظورم اون کلاسیه که میخواید از طریق برنامه ی دیگه ای بهش دسترسی داشته باشید) باید اون کلاس رو export کنید، مثلا به فرض کلاسی بنام MyTempClass رو نوشته باشید و بخواید برای استفاده از بیرون DLL آماده اش کنید، در اینصورت باید کلمات کلیدی (declspec(dllexport__ رو به اعلان کلاس اضافه کنین، مثلا بنویسی:


class __declspec( dllexport ) MyTempClass
{
...تعریف اعضای کلاس
};

همین :لبخندساده: برنامه رو کامپایل کنین تا یک فایل DLL و یک فایل LIB براتون بسازه.

___________________________

برای استفاده از کلاس موجود در اون DLL هم کافیست که فایل LIB ساخته شده در مرحله قبل رو برای پروژه جدیدی که میخواید بنویسید، ورودی مربوط به لینکر رو براش مشخص کنین، اگه از ویژوال استودیو 2005 استفاده میکنی، یک پروژه جدیدی مثلا از نوع Console بسازین و روی پروژه کلیک راست کرده و انتخاب گزینه Properties و سپس از قسمت درختی گزینه Linker رو باز کنید و گزینه Input انتخابش کرده و در سمت راست در قسمت Additional Dependencies آدرس کامل فایل LIB رو (در داخل گیومه "") براش مشخص کنید. بعدش که فایل LIB معرفی شد، باید اینترفیس یا ظاهر کلاس رو در پروژه جدید مشخص کنید، به همین منظور مثلا میخوایم از همون کلاس MyTempClass در این پروژه جدید استفاده کنیم، پس اینطور اعلانش میکنیم (با dllimport):


class __declspec( dllimport ) MyTempClass
{
...تعریف اعضای کلاس
};

همین، حالا میشه از کلاس استفاده کرد.